目录索引
0. 环境准备
安装之前先检测系统是否已经存在 MySQL:
rpm -qa | grep mysql
如果存在,将其删除:
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
1. 配置安装源
1.1 官方源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
1.2 镜像源
参考清华大学镜像源。
新建 /etc/yum.repos.d/mysql-community.repo,内容如下:
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
[mysql-5.6-community]
name=MySQL 5.6 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-$basearch/
enabled=0
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
[mysql-8.0-community]
name=MySQL 8.0 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
PS:如果使用其他镜像源,则需要注意以下事项:
- http://{your_mirror}/yum/mysql-8.0-community-el-7-x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
检查
baseurl
中的地址路径与镜像服务器的文件路径是否一致。尝试将 url 中的mysql-8.0-community-el-7-x86_64
更改为mysql-8.0-community/el/7/x86_64
(具体格式以所用镜像服务器的实际文件路径为准)。
- 如果系统在内网,或者由于网络限制无法进行
gpgkey
验证,则可以将RPM-GPG-KEY-mysql
文件下载到本地,然后放到/etc/pki/rpm-gpg/
目录下,修改gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
为file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
。
2. MySQL 安装
yum update
yum install mysql-server
如果此步骤报错,请返回上一步看一下注意事项。
3. MySQL 配置
3.1 配置 MySQL 数据文件夹用户/用户组
chown mysql:mysql -R /var/lib/mysql
3.2 初始化 MySQL
mysqld --initialize
初始化完成后,会在 MySQL error log(log 文件位置在 /etc/my.cnf
配置文件中找 log-error
对应的目录) 中记录 root 账户的初始化密码。
2020-07-09T11:04:09.799833Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 64906
2020-07-09T11:04:12.167519Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: yildrjgSa9!p
...
如果想初始化无密码的 root 账户,则执行:
mysqld --initialize-insecure
3.3 MySQL 运行管理
- 启动 MySQL 服务
systemctl start mysqld
- 查看 MySQL 服务状态
systemctl status mysqld
注意事项:
- 默认情况下,MySQL 服务需要使用
mysql
账户启动,如果想要使用root
账户启动该服务,则需要在启动命令后面加上--user=mysql
:
# /usr/sbin/mysqld --user=mysql
修改 /etc/my.cnf
文件,在末尾新增一行 user=mysql
,则可在系统启动时自动以 mysql
账户运行 MySQL 服务。
[mysqld]
user=mysql
- 如果无法正常启动服务,查看
/var/log/mysqld.log
中的错误提示信息,比如:
2020-07-09T11:04:24.189000Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 65067
2020-07-09T11:04:24.201278Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2020-07-09T11:04:24.201366Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2020-07-09T11:04:24.201425Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2020-07-09T11:04:24.201580Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2020-07-09T11:04:24.201656Z 0 [ERROR] [MY-010119] [Server] Aborting
错误信息显示无法初始化数据文件夹, ibdata1
不可写,此时需要检查一下数据文件夹的用户组和权限,然后重新执行:
chown mysql:mysql /var/lib/mysql
4. MySQL 账户设置
完成以上步骤后,还需要通过命令行重新设置 root
账户的密码。
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
...
ROOT 密码参考 3.2 初始化 MYSQL
如果使用 --initialize-insecure
初始化,则执行以下命令:
mysql -u root --skip-password
连接成功后,修改 root
账户的密码,否则无法操作数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY '{your_password}';
至此,MySQL 服务已经可以正常使用。
参考资料
- https://www.runoob.com/mysql/mysql-install.html
- https://blog.csdn.net/king_1421484363/article/details/73293411
- https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
- https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html