【MySQL 8】在 CentOS 上安装 MySQL 8:获取初始密码、修改密码验证级别和授权远程连接

1.卸载 mariadb

	由于centos7默认安装了mariadb, 会造成依赖冲突,所以需要卸载,步骤:
rpm -qa | grep mariadb
#如果出现
mariadb-libs-5.5.68-1.el7.x86_64
#执行
rpm -e mariadb-libs --nodeps

2.下载MySQL8

# 下载MySQL8的安装文件
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar

# 在 /usr/local/src 目录下创建一个mysql目录,进入目录后将下载的mysql解压到mysql目录下
mkdir /usr/local/src/mysql
tar -xvf mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar -C /usr/local/src/mysql

# 解压后应该有这几个文件
mysql-community-client-8.0.31-1.el7.x86_64.rpm           
mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm   
mysql-community-libs-8.0.31-1.el7.x86_64.rpm
mysql-community-common-8.0.31-1.el7.x86_64.rpm           
mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpm
mysql-community-debuginfo-8.0.31-1.el7.x86_64.rpm        
mysql-community-server-8.0.31-1.el7.x86_64.rpm
mysql-community-devel-8.0.31-1.el7.x86_64.rpm            
mysql-community-server-debug-8.0.31-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.31-1.el7.x86_64.rpm  
mysql-community-test-8.0.31-1.el7.x86_64.rpm

3. 安装MySQL8

yum install -y perl.x86_64

# 在mysql目录下执行yum安装命令,等待跑完安装成功
 yum install -y mysql-community-*.rpm
如果安装失败的话执行下面命令将mysql删除
#查询安装
rpm -qa | grep -i mysql
#使用rpm -e 命令将上个命令中包列表一一进行卸载
 
#然后删除mysql相关的服务。
chkconfig --list | grep -i mysql
chkconfig --del mysql
 
#然后找出OS中分散的mysql文件夹,并删除。
find / -name mysql
#最后清空mysql相关的的所有目录以及文件
rm -rf (注意每个绝对路径中间用空格隔开)

4.启动、查看MySQL状态

#启动
systemctl start mysqld
 
#查看启动状态
systemctl status mysqld

'  如果active是active (running)则启动成功
	● mysqld.service - MySQL Server
	   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
	   Active: active (running) since 五 2023-03-31 20:50:41 CST; 1h 19min ago
	     Docs: man:mysqld(8)
	           http://dev.mysql.com/doc/refman/en/using-systemd.html
	  Process: 5506 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
	 Main PID: 5581 (mysqld)
	   Status: "Server is operational"
	   CGroup: /system.slice/mysqld.service
	           └─5581 /usr/sbin/mysqld
	
	3月 31 20:50:37 localhost.localdomain systemd[1]: Starting MySQL Server...
	3月 31 20:50:41 localhost.localdomain systemd[1]: Started MySQL Server.'

5.修改初始密码(改弱密码方法)

虚拟机安装MySQL学习测试使用,强密码有些复杂,我们改成弱密码。
但由于MySQL 8.0 调整密码验证规则,没有修改默认密码,无法修改密码验证策略。
不修改密码直接改验证规则,会出现下面的报错信息

	ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

这个错误信息表明您需要在执行其他语句之前使用 ALTER USER 语句重置您的密码。
您可以使用以下命令来重置密码:
ALTER USER ‘yourUserName’@‘localhost’ IDENTIFIED BY ‘yourNewPassword’;
请将 yourUserName 和 yourNewPassword 替换为您的用户名和新密码
但是第一次修改必须是强密码,所以我们先修改一个强密码,

#查看初始密码
grep 'temporary password' /var/log/mysqld.log
 
#登录、使用刚才的获得的密码
mysql -uroot -p
 
 #修改密码(先设置包含大小写字母+数字并且大于8位的密码)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';'

#MySQL 8.0 调整密码验证规则(否则设置简单密码不成功):
set global validate_password.policy=0;
set global validate_password.length=1;
# 查看密码策略
	mysql> SHOW VARIABLES LIKE 'validate_password%';
	+--------------------------------------+-------+
	| Variable_name                        | Value |
	+--------------------------------------+-------+
	| validate_password.check_user_name    | ON    |
	| validate_password.dictionary_file    |       |
	| validate_password.length             | 4     |
	| validate_password.mixed_case_count   | 1     |
	| validate_password.number_count       | 1     |
	| validate_password.policy             | LOW   |
	| validate_password.special_char_count | 1     |
	+--------------------------------------+-------+
	7 rows in set (0.01 sec)
	/*
	策略说明
	validate_password.length 是密码的最小长度,默认是8,我们把它改成6
	输入:set global validate_password.length=6;
	validate_password.policy 验证密码的复杂程度,我们把它改成0
	输入:set global validate_password.policy=0;
	validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉
	输入:set global validate_password.check_user_name=off;
	*/
  #修改弱密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';'

6.设置mysql远程链接(确保MySQL的3306端口开放)

直接用root账户授权远程访问失败,最新的MySQL8不允许直接创建并授权用户远程访问权限,必须先让自己有GRANT权限,然后创建用户,再授权。

# 先确保自己有授权权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
# 更新一下权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 查询自己是否有权限
mysql> SELECT host,user,Grant_priv,Super_priv FROM mysql.user;
+---------------+------------------+------------+------------+
| host          | user             | Grant_priv | Super_priv |
+---------------+------------------+------------+------------+
| localhost     | root             | Y          | Y          |
+---------------+------------------+------------+------------+
7 rows in set (0.00 sec)

# 创建新用户
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
# 这里的localhost换成%通配符,匹配所有host
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
Query OK, 0 rows affected (0.13 sec)
# 授予新用户权限
mysql> grant all on *.* to 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

在 MySQL 8.0 及更高版本中,您不能再使用 GRANT 语句来创建新用户。相反,您需要先使用 CREATE USER 语句来创建新用户,然后再使用 GRANT 语句来授予权限。

例如,如果您想为名为 yourUserName 的用户授予访问名为 yourDatabase 的数据库的权限,并将该用户的密码设置为 yourPassword,可以使用以下命令:

CREATE USER 'yourUserName'@'localhost' IDENTIFIED BY 'yourPassword';
GRANT ALL PRIVILEGES ON yourDatabase.* TO 'yourUserName'@'localhost';
FLUSH PRIVILEGES;

请将 yourDatabase、yourUserName 和 yourPassword 替换为相应的值。

7.最后

用软件登陆的Mysql8数据库时,会报错:Authentication plugin ‘caching_sha2_password’ cannot be loaded。 出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
在这里插入图片描述
解决问题方法有两种,一种是升级navicat驱动, 另一种是把mysql用户登录密码加密规则还原成mysql_native_password。此处采用第二种,修改加密规则:

1、登录Mysql:
 
mysql -u root -p
 
2、修改账户密码加密规则并更新用户密码:
 
#修改加密规则(可以直接复制)
 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 这个是远程连接的用户
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
 
//更新一下用户的密码(可以直接复制)
 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
 
3、刷新权限并重置密码
 
//刷新权限(可以直接复制)
 
FLUSH PRIVILEGES;
 
4、重置密码
 
//此处请自定义密码,红色的root就是博主自定义的密码
 
alter user 'root'@'localhost' identified by '123456';
alter user 'root'@'%' identified by '123456';
 
此处将密码改为root

从新连接成功
在这里插入图片描述
引用:
[1] centos安装MySQL8完整指南
[2] Mysql8.0解决报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
[3] MySQL8授权用户远程连接失败,提示ERROR 1410 (42000): You are not allowed to create a user with GRANT
[4] Bing AI

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值