Linux 安装 MySQL 8
一、概要
1. 环境
(1) CentOS 7.9 2009
(2) MySQL 8.0.32
(3) Rocky Linux 9.3
2. 准备
(1) 安装包
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
下载完成后解压:
tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
这个压缩文件包含MySQL所有组件:
而我们需要安装的组件如下(按先后顺序):
mysql-community-common
mysql-community-client-plugins
mysql-community-libs
mysql-community-libs-compat
mysql-community-icu-data-files
mysql-community-client
mysql-community-server
你也可以按照这个列表逐个下载,本文为了方便,选择了bundle包。
(2) 删除Mariadb
a.查询
rpm -qa|grep mariadb
得到结果:
b. 删除
sudo rpm -e --nodeps mariadb-libs-5.5.56-2.el7.centos.x86_64
二、安装与配置
1. 直接安装(Rocky Linux 9.3)
sudo dnf install mysql-server -y
2. 安装包安装
(1) 顺序安装MySQL组件
sudo yum localinstall -y mysql-community-common-8.0.32-1.el7.x86_64.rpm
sudo yum localinstall -y mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm sudo yum localinstall -y mysql-community-libs-8.0.32-1.el7.x86_64.rpm
sudo yum localinstall -y mysql-community-libs-compat-8.0.32-1.el7.x86_64.rpm
sudo yum localinstall -y mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
sudo yum localinstall -y mysql-community-client-8.0.32-1.el7.x86_64.rpm
sudo yum localinstall -y mysql-community-server-8.0.32-1.el7.x86_64.rpm
(2) 检查安装结果
sudo rpm -qa | grep mysql
3. 服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
systemctl status mysqld
4. 初始化
(1) 直接安装
a. 日志文件位于:
/var/log/mysql/mysqld.log
b. 系统为root用户设置了空密码,仅允许本地登录;
c. 强烈建议开启安全模式
sudo mysql_secure_installation
它将执行以下操作:
i. 为root账户设置强密码;
ii. 移除匿名账户;
iii. 禁止远程登录root账户;
iv. 移除test数据库;
v. 重载权限配置。
(2) 安装包安装
MySQL在启动过程中会进行如下操作:
a. 初始化MySQL;
b. 在/var/lib/mysql目录下生成一个SSL证书和密钥文件;
c. 安装validate_password plugin;
d. 创建一个超级用户帐号'root'@'localhost,并且为其生成一个随机密码存放在/var/log/mysqld.log文件。
安装完成之后,通过下面的方式找到root默认密码,然后登录mysql进行修改:
sudo grep 'temporary password' /var/log/mysqld.log
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass1!';
密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。
5. 测试
mysqladmin -u root -p version
需要输入密码。
6. 防火墙
(1) 开放端口
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload sudo firewall-cmd --list-ports
三、用户与授权
1. 添加账户
(1) 格式
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
2. 授权账户
(1) 不指定密码
GRANT <权限> ON <数据库>.<表> TO '用户名'@'主机';
(2) 指定密码
GRANT <权限> ON <数据库>.<表> TO <用户>@<主机> IDENTIFIED BY '密码';
(3) 权限
SELECT: 只读;
INSERT: 插入;
UPDATE:更新;
DELETE:删除;
ALL PRIVILEGES: 所有权限。
3. 为MySQL初始化账户
(1) 创建账户
为了安全起见,强烈建议在远程连接的时候使用非root账户。创建test用户,密码为“MyNewPass1!”,为其分配所有权限。
CREATE USER 'test'@'%' IDENTIFIED BY 'MyNewPass1!'; GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION; flush privileges;
@后的'%'是指任何IP都可以访问数据库;
@后的'localhost'是指只有安装MySQL的机器可以访问数据库。
(2) 检索账户
注意,每次执行完create user命令,一定要通过以下命令查看创建用户是否成功:
use mysql; select host, user from user;
(3) 修改密码验证
经验证,MySQL Workbench 8.0.32已不需要该额外配置。
对于新创建的账户,MySQL 8默认它的密码插件为caching_sha2_password,而现有的客户端工具大都只支持mysql_native_password插件,如果你用现有版本的客户端工具链接会报错“authentication plugin caching_sha2_password cannot be loaded”。
解决方法是改变用户的密码插件:
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass1!';
flush privileges;
然后需要修改配置文件:
sudo vi /etc/my.cnf
重启MySQL:
sudo systemctl restart mysqld
查看用户和权限是否创建成功:
select user, host, plugin, authentication_string from mysql.user;
SHOW GRANTS FOR 'test'@'%';
四、参考
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-rocky-linux-9
https://www.sqliz.com/posts/install-mysql8-on-rocky-linux-9/