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, pluginauthentication_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/

https://blog.51cto.com/u_16213417/7429778

posted @ 2018-04-30 22:55  白马黑衣  阅读(2488)  评论(0编辑  收藏  举报