CentoOS8安装apache+php+mysql

首先第一步

CentOS8更换阿里云源

1
2
3
4
5
6
#备份源 2021年12月31日停止使用
[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Linux-Base.repo /etc/yum.repos.d/CentOS-Linux-Base.repo.backup
#更换源 2021年12月31日停止使用
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
#或者 2021年12月31日停止使用
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

注意:从2021年12月31日起,CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。

CentOS 8 EOL
阿里云centos源地址:https://developer.aliyun.com/mirror/centos

先释放ip再获取ip以防止下载失败

1
2
[root@localhost ~]# dhclient -r
[root@localhost ~]# dhclient

下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

如果是CentOS7 使用以下命令更换CentOS7源

1
2
3
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

centos8已停止更新:如果是centos8(centos8官方源已下线,建议切换centos-vault源)

1
2
3
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
或者
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

运行 yum makecache 生成缓存

1
[root@localhost ~]# yum makecache

或者直接

1
[root@localhost ~]# yum clean all && yum makecache

安装net-tools,不然使用不了ifconfig命令,看不了ip地址

1
[root@localhost ~]# yum install net-tools -y

安装vim编辑器

1
[root@localhost ~]# yum install vim -y

安装apache,用于网站访问

1
[root@localhost ~]# yum install httpd -y

启动httpd

1
[root@localhost ~]# service httpd start

ifconfig查看ip地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.110 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:0f:c9:8a txqueuelen 1000 (Ethernet)
RX packets 2046993 bytes 955001567 (910.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2187370 bytes 281197289 (268.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2451 bytes 106588 (104.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2451 bytes 106588 (104.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

现在还访问不了,因为需要关闭防火墙

1
[root@localhost ~]# service firewalld stop

检测是否安装php,如果什么信息也没有,那么你就要自己安装php了

1
[root@localhost ~]# rpm -qa | grep php

安装php

1
[root@localhost ~]# yum install -y php

安装php-mysql扩展

1
[root@localhost ~]# yum install php-mysqlnd -y

再次检测,看是否安装。看到如下信息就证明安装成功了。

1
2
3
4
5
6
[root@localhost ~]# rpm -qa | grep php
php-cli-5.3.3-26.el6.i686
php-5.3.3-26.el6.i686
php-common-5.3.3-26.el6.i686
省略...
[root@localhost ~]#

重新启动Apache服务

1
[root@localhost ~]# service httpd restart

测试php。在/var/www/html/目录下创建一个index.php文件。然后在浏览器输入http://127.0.0.1/index.php

1
2
3
4
5
6
7
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# touch index.php
[root@localhost html]# gedit index.php
<?php
echo "hello php";
?>

安装gd库,支持php图形验证码。在终端输入命令“yum install -y php-gd”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~]# yum install -y php-gd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
=============================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================
Installing:
php-gd i686 5.3.3-26.el6 base 105 k
Installing for dependencies:
libXpm i686 3.5.10-2.el6 base 50 k
Dependency Installed:
libXpm.i686 0:3.5.10-2.el6
Complete!
[root@localhost ~]# rpm -qa | grep php-gd
php-gd-5.3.3-26.el6.i686
[root@localhost ~]#

安装mysql

正如介绍中所提到的,Yum安装MySQL的命令实际上安装了MariaDB。要安装MySQL,我们需要访问MySQL社区Yum Repository,它为MySQL提供软件包。

在web浏览器中,访问:https://dev.mysql.com/downloads/repo/yum/
请注意,突出的下载链接不会直接指向这些文件。相反,它们会引导您进入下一个页面,邀请您登录或注册帐户。如果你不想创建帐户,你可以找到文本 不,谢谢,只需开始我的下载,然后右键单击并复制链接位置,或者你可以在下面的命令中编辑版本号。

启用存储库

将最新的MySQL GPG密钥导入到您的系统中

1
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

安装mysql8.0

首先,您需要在您的系统上启用MySQL 5.7社区发布的yum存储库。MySQL的官方网站上提供了用于yum存储库配置的rpm包。

1
curl -sSLO https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

安装mysql5.7

首先,您需要在您的系统上启用MySQL 5.7社区发布的yum存储库。MySQL的官方网站上提供了用于yum存储库配置的rpm包。

1
curl -sSLO https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

校验

一旦保存了rpm文件,我们将通过运行md5sum并将其与网站上列出的相应MD5值进行比较来验证下载的完整性:

1
md5sum mysql57-community-release-el7-7.noarch.rpm

开始安装

现在我们已经验证了文件没有损坏或更改,我们将安装程序包

1
sudo rpm -ivh mysql57-community-release-el7-7.noarch.rpm
1
sudo yum install mysql mysql-server -y

开启服务

启动mysql服务

1
service mysqld start

在安装过程中,会为MySQL根用户生成一个临时密码。使用以下命令在mysqld.log中找到它

1
sudo grep 'temporary password' /var/log/mysqld.log

Output

2022-01-24T19:54:46.313728Z 6 [Note] [MY-010454] [Server] A temporary password is generated for
root@localhost: mqRfBU_3Xk>r

记下密码,您将在下一步中需要该密码来确保安装的安全,以及您将被迫更改密码的位置。默认密码策略需要12个字符,至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符。
MySQL包含一个安全脚本,用于更改一些不太安全的默认选项,例如远程根登录和示例用户。
使用此命令可以运行安全脚本。

1
sudo mysql_secure_installation

Output

The existing password for the user account root has expired. Please set a new password.

New password:
这将提示您输入默认的root密码。一旦您输入它,您将被要求更改它。
输入一个新的12个字符的密码,该密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符。提示时重新输入。
您将收到关于新密码强度的反馈,然后系统会立即提示您再次更改密码。既然你刚刚做到了,你可以自信地说“不”:

Output

Estimated strength of the password: 100
Change the password for root ? (Press y|Y for Yes, any other key for No) :

在我们拒绝再次更改密码的提示后,我们将按Y,然后按ENTER键回答所有后续问题,以删除匿名用户,禁止远程根登录,删除测试数据库和对它的访问,并重新加载权限表。

当然也可以使用以下命令修改密码

1
mysqladmin -uroot -pmqRfBU_3Xk>r password Admin@123

Output

mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

现在我们已经确保了安装的安全,让我们测试一下。
进入mysql(Admin@123是自己的密码):

1
mysql -uroot -pAdmin@123

密码策略的所有参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

创建用户(可选)

1
2
3
4
5
6
7
USE mysql; #创建用户需要操作 mysql 表
# 语法格式为 [@'host'] host 为 'localhost' 表示本地登录用户,host 为 IP地址或 IP 地址区间,表示指定IP地址的主机可登录,host 为 "%",表示所有主机都可登录,省略代表所有主机
CREATE USER 'username'[@'host'] IDENTIFIED BY 'password';
# eg. 常见 local_user 用户可以在所有主机登录,密码为 123456
CREATE USER 'local_user' IDENTIFIED BY '123456';
# eg. 创建 local_user 只允许在本地登录
CREATE USER 'local_user'@'localhost' IDENTIFIED BY '123456';

查看用户权限(可选)

1
2
3
4
5
6
7
8
# 可以通过查询 user 表获取 语法格式为
SELECT privileges|* FROM user WHERE `user` = 'username';
# eg. 查看 local_user 的权限
SELECT * FROM user WHERE `user` = 'local_user';
# 也可以用 SHOW GRANTS 查看
SHOW GRANTS FOR 'username' [@host];
# eg.
SHOW GRANTS FOR local_user;

赋予权限(可选)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 语法格式
GRANT privileges ON database.table TO 'username'@'host' [IDENTIFIED BY 'password'];
# eg. 赋予 local_user 在所有主机的所有权限,但不包含给其他账号赋予权限的权限
GRANT all ON *.* TO 'local_user'@'%';
# 用户授权数据库
grant select,insert,update,delete,create on [数据库名称].* to [用户名称];
# *代表整个数据库.
# 例子:
mysql> grant select,insert,update,delete,create on estuntest.* to estuntest;
Query OK, 0 rows affected (0.00 sec)
# 授权某个用户拥有某个数据库的所有权限
GRANT ALL privileges ON test_db.* TO user_name@'%'IDENTIFIED BY 'password';
# 刷新权限 权限更新后刷新才会起作用
FLUSH PRIVILEGES;

配置mysql字符集

  1. 编辑文件:
    1
    vim /etc/my.cnf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #禁用SSL
    skip_ssl

    #跳过密码策略
    validate_password=off

    #add charset
    [client]
    #客户端字符集
    default-character-set=utf8mb4

    [mysql]
    #客户端字符集
    default-character-set=utf8mb4

    [mysqld]
    #是否对sql语句大小写敏感,1表示不敏感
    lower_case_table_names=1
    #设置client连接mysql时的字符集,防止乱码
    init_connect='SET NAMES utf8mb4'
    #数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
    character-set-server=utf8mb4
    #数据库字符集对应一些排序等规则,注意要和character-set-server对应
    collation-server=utf8mb4_unicode_ci
  2. 重启mysqld:
    1
    service mysqld restart
  3. 连接上MySQL查看字符集:
    1
    show variables like 'character%';
  4. 连接上MySQL查看规则集:
    1
    show variables like 'collation%';

允许远程机器登录

修改mysql数据库中的 “user” 表里的 “host” 字段,从”localhost”改称”%”

1
use mysql;
1
update user set host = '%' where user = 'root';
1
flush privileges;

mysqldump常见使用方法

  1. 导出所有数据库
    1
    mysqldump -uroot -proot --all-databases > /tmp/all.sql
  2. 导出db1、db2两个数据库的所有数据
    1
    mysqldump -uroot -proot --databases db1 db2 > /tmp/user.sql
  3. 导出db1中的a1、a2表
    1
    mysqldump -uroot -proot --databases db1 --tables a1 a2  > /tmp/db1.sql
  4. 只导出表结构不导出数据,–no-data
    1
    mysqldump -uroot -proot --no-data --databases db1 > /tmp/db1.sql
  5. 导入说明: 使用mysql而不是mysqldump
    1
    mysql -uroot -pAdmin@123 db < sql.sql
  6. 参数说明

–all-databases , -A
导出全部数据库
–databases, -B
导出几个数据库。参数后面所有名字参量都被看作数据库名
–force
在导出过程中忽略出现的SQL错误
mysqldump -uroot -p --all-databases --force
–host, -h
需要导出的主机信息
mysqldump -uroot -p --host=localhost --all-databases
–password, -p
连接数据库密码
–port, -P
连接数据库端口号
–user, -u
指定连接的用户名

Author: chacebai
Link: http://www.spyhex.com/2019/2019-CentoOS8安装apache-php-mysql/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.