在CentOS7中安装MySQL数据库

MySQL 安装

本文基于 CentOS 7.9 系统进行安装。

1. 准备安装包

这里准备的是 mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz,并将其直接放在了 /root 目录下。

1
[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz

注意这里的 glibc2.12,是安装 MySQL 所需的的 glibc 版本,在安装之前先输入 rpm -q glibc ,查看本系统的 glibc 版本,安装的版本不能高于系统的版本,否则需要自行下载在配置(比较麻烦,不推荐)。

2. 卸载系统⾃带的 MARIADB

输入 rpm -qa|grep mariadb 检查是否有 mariadb,它会和 MySQL 冲突,如果没有则可以跳过此步骤。

image-20230517140915613

输入如下命令卸载:

1
[root@localhost ~]# yum -y remove mariadb-libs-5.5.68-1.el7.x86_64

3. 解压 MySQL 安装包

输入如下命令,将安装包解压至 /usr/local/ 目录,并将目录重命名为 mysql

1
2
3
[root@localhost ~]# tar -xJvf /root/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local
[root@localhost ~]# cd /usr/local
[root@localhost local]# mv mysql-8.0.33-linux-glibc2.12-x86_64 mysql

4. 创建 MySQL 用户和 MySQL 用户组

输入如下命令:

1
2
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -g mysql mysql

同时,新建 /usr/local/mysql/data ,便于后续配置,该文件夹用来存放 MySQL 的数据文件。

5. 修改 MySQL 目录的归属用户

输入如下命令:

1
[root@localhost mysql]# chown -R mysql:mysql ./ 

6. 创建 MySQL 的配置文件

首先在 /etc 目录下新建 my.cnf 文件。

然后在该文件写入如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

同时新建文件 /var/lib/mysql,并求改其权限:

1
2
[root@localhost ~]# mkdir /var/lib/mysql
[root@localhost ~]# chmod 777 /var/lib/mysql

7. 安装 MySQL

首先进入刚才解压的目录,也就是 /usr/local/mysql 目录,执行如下命令:

1
2
[root@localhost ~]# cd /usr/local/mysql
[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

image-20230517145641926

记住这里的 MySQL 密码,待会儿登录数据库要用到。

8. 复制启动脚本到资源目录

❗注意:如果在你的服务器中已有 mysqld 服务,则将其改为其他名字即可解决冲突,例如改为 mysqld2,下面以 mysqld 做演示。

执行如下命令进行复制:

1
[root@localhost mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld

然后打开 /etc/init.d/mysqld,修改 basedirdatadir 的路径。

1
2
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

9. 设置 MYSQL 系统服务并开启⾃启

首先增加 mysqld 的服务控制脚本执行权限:

1
[root@localhost mysql]# chmod +x /etc/init.d/mysqld

mysqld 加入到系统服务:

1
[root@localhost mysql]# chkconfig --add mysqld

❗注意:如果你在这碰到了 ... ERROR! The server quit without updating PID file,一般是因为端口冲突,修改 /etc/my.cnf 即可。

最后检查 mysqld 服务是否生效:

1
[root@localhost mysql]# chkconfig --list mysqld

image-20230517151057250

这样就说明 mysqld服务已经生效,在 2、3、4、5 运行级别随系统启动而自启,以后可以使用 service 命令控制 mysql 的开启与关闭。

10. 启动 MySQL

直接执行如下命令:

1
[root@localhost mysql]# service mysqld start

image-20230517152423748

11. 将 MySQL 的 bin 目录加入到 PATH 环境变量

为了方便以后在任意目录下都可以使用 MySQL 提供的命令,需要修改 ~/.bash_profile 文件,直接在末尾追加如下信息:

1
2
# Mysql Config
export PATH=$PATH:/usr/local/mysql/bin

然后再执行 source ~/.bash_profile 使配置生效。

12. 登录 Mysql

以 root 账户登录 mysql,根据上文提示的密码进行登录。

1
[root@localhost mysql]# mysql -u root -p

image-20230517154150619

13. 修改 root 账户的密码

输入如下命令进行修改,这里将密码修改为 “123456”,可自行修改成其他密码。

1
2
mysql> alter user user() identified by "123456";
mysql> flush privileges;

14. 设置远程主机登录

首先输入如下命令:

1
2
3
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

这里使用 Navicat 进行测试。

输入虚拟机的 ip 地址(使用 ip addr 查看),然后输入 root 和刚才重新设置的密码,但是发现连接不上,这是因为我们还没有关闭防护墙。

输入命令关闭防火墙:

1
[root@localhost mysql]# systemctl stop firewalld

如果是在服务器上,例如阿里云、腾讯云,则添加对应的防火墙规则。

查看防火墙规则命令:

1
sudo firewall-cmd --list-port

添加端口规则后,再去阿里云控制台添加规则才能成功。

最后就可以看到连接成功了。