前面写过 CentOS 7 安装MySQL 7 的教程,最近新的服务器都使用了 CentOS 8,数据库也升级到 MySQL 8.0,安装教程也升级一下。
DNF 是 CentOS 8 的默认包管理器,是YUM的下一代版本。本篇安装教程使用 DNF 包管理器进行安装。
安装 MySQL 8.0
执行下面的命令进行安装
sudo dnf install @mysql
安装成功
配置表大小写不敏感
在首次启动之前要配置表大小写不敏感,这是和 MySQL 7 不一样的地方。
mysql的配置文件是 /etc/my.cnf,它 include 了 /etc/my.cnf.d 目录下的配置,所以在 /etc/my.cnf.d/mysql-server.cnf 配置文件里加上下面的配置
lower_case_table_names=1
启动MySQL
使用下面的命令启动 MySQL 服务,并使其开机时自动启动
sudo systemctl enable --now mysqld
查看MySQL 服务运行状态
sudo systemctl status mysqld
MySQL 安全性设置
运行mysql_secure_installation
脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码
sudo mysql_secure_installation
运行后会执行下面几个配置
- 为root用户设置密码;
- 删除匿名账号;
- 取消root用户远程登录;
- 删除test库和对test库的访问权限;
- 刷新授权表使修改生效。
按照屏幕提示操作即可。
身份验证方法
由于CentOS 8 中的某些客户端工具和库跟 caching_sha2_password
方法不兼容,CentOS 8 存储库中包含的 MySQL 8.0服务器被设置为使用旧的mysql_native_password
身份验证插件。
mysql_native_password
方法适用于大多数设置。但是,如果您想将默认身份验证插件更改为caching_sha2_password
,会更快并提供更好的安全性,可以在 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf 配置文件中修改。
最后不要忘了重启 mysql 服务
sudo systemctl restart mysqld
开启远程连接
开启远程连接需要设置两个地方,一是MySQL服务允许外网访问,另外一个是用户支持外网访问。
MySQL服务允许外网访问
在 /etc/my.cnf.d/mysql-server.cnf 中加上下面的配置
port=3306
bind-address=0.0.0.0
用户支持远程访问
root 权限登录mysql,更新mysql.user表,设置指定用户(下面以root为例)的host为 %登录mysql
登录mysql
mysql -uroot -p
选择mysql数据库
mysql> use mysql;
查询host
mysql> select host,user from user;
如果没有%的host,就更新为%
mysql> update user set host='%' where user='root';
mysql> flush privileges;
给用户授权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
%表示从任意IP,可以替换为具体的IP或IP地址段
最后不要忘了防火墙开放3306端口