由于经常需要在 Linux 系统安装 MySQL,而网上的教程质量参差不齐,每次安装都在网上找教程很耽误时间,因此写一个笔记记录一下自己总结的最新版 MySQL 安装教程。可以保证只要 MySQL 官方下载地址未变,教程就不会失效。
本篇教程共分为三部分,首先是安装,其次是配置使用,如果安装过程中出现问题可以看第三节排错部分,如果安装过程中有什么问题可以在下方评论指出。

安装最新版MySQL

访问官方yum源下载地址: MySQL :: Download MySQL Yum Repository

找到对应版本的 yum 源地址,例如我的系统版本为 CentOS 7,CentOS是 Red Hat 旗下产品,因此选择 Red Hat Enterprise Linux 7 对应的yum源地址,点击旁边的 Download 按钮

在跳转过去的下载页面中,右键下载地址复制链接

在 Linux 中输入指令更新 yum 源,用刚刚复制的链接替换指令中的下载地址:

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

基于EL8的系统(如CentOS  8 、Oracle Linux 8和Red Hat Enterprise Linux 8)会默认启用一个MySQL模块,必须要禁用这个模板才能安装yum存储库提供的包(其他版本的系统不需要执行这一步操作):

1
yum module disable mysql

使用MySQL Yum包时,默认情况下会选择MySQL的最新GA版本进行安装,通过下面的指令可以查看所有可安装的MySQL版本

1
yum repolist all | grep mysql

使用指令安装存储库内最新社区版 MySQL,如果希望安装指定版本的MySQL,可以参照官方安装文档说明:MySQL :: A Quick Guide to Using the MySQL Yum Repository

1
yum -y install mysql-community-server --nogpgcheck

查看MySQL版本号,可以输出版本号则说明安装成功

1
mysql -V

输入指令启动MySQL服务,启动后可以查看下启动状态,看是否正常运行:

1
2
systemctl start mysqld
systemctl status mysqld

配置初始化

安装完毕后还需要对MySQL进行初始化配置才能使用,MySQL安装成功会自动生成一个高复杂度的密码,在后面重置root用户密码时需要用到,所以要先获取到这个密码值,一般是最后生成的这条

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

输入指令配置MySQL安全设置:

1
mysql_secure_installation

配置内容如下,首先更换root用户的默认密码,需要输入的部分说明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 输入之前获取到的root密码
Enter password for user root:

# 输入修改的新密码,长度要8~30个字符,并且同时包含大小写英文字母、数字和特殊符号
New password:

# 再输入一遍新密码
Re-enter new password:

# 输入 y 确定更换root用户密码
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

# 再次输入新密码
New password:

#再次确认新密码
Re-enter new password:

# 输入 y 确认使用刚刚提供的密码
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

修改完密码后接着要配置其他安全选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 输入 y 删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

# 输入 y 禁止root用户远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

# 输入 y 移除test库和用户对test库的访问权限
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

# 输入 y 立即重新加载授权表
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

安装错误排查

我是在启动MySQL服务时提示了错误,不管是什么错误,想要知道具体的错误原因就需要查看错误日志,输入下面的指令查看错误日志:

1
cat /var/log/mysqld.log | grep ERROR

我这里的错误就是3306端口被占用,查看是哪个服务占用了3306端口

1
netstat -tunlp |grep 3306

然后修改该服务端口或者MySQL端口就行,我选择修改mysql端口,编辑配置文件

1
vim /etc/my.cnf

添加端口配置后重启MySQL服务就行:

1
2
[mysqld]
port=13306