记录:CentOS安装配置MySQL8

  • CentOS 7.9 64位
  • MySQL 8
  • 之前都是用docker安装这次想学下alibaba/canal改配置有点麻烦,所以虚拟机安装mysql记录一下安装过程和细节
  • Windows下安装可以看我的:windows安装mysql8

1、安装 MySQL8

1.1、安装 mysqlmysql-devel

yum install mysql
yum install mysql-devel

1.2、安装 mysql-server

wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
yum install mysql-community-server

出现:全部都y
Is this ok [y/d/N]: y
Is this ok [y/d/N]: y

1.3、安装完成查看已安装的包

rpm -qa |grep -i mysql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ioc6oeoI-1667818471990)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107153511695.png)]

1.4、重启mysql服务

安装完成后重启mysql服务后会生成初始化密码

service mysqld restart #重启mysql
或
systemctl restart mysqld
systemctl status mysqld #查看mysql服务状态

mysql8初次安装后,需要先通过cat /var/log/mysqld.log | grep password 命令查看密码,修改密码时,需要 符合长度为8,且含有数字、小写或大写字母、特殊字符

1.5 、查看初始化的密码

[root@localhost ~]# cat /var/log/mysqld.log | grep password
2022-10-24T19:38:34.611116Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iiaE%3BdnfUJ   #iiaE%3BdnfUJ这就是初始的密码

1.6、登录MYSQL

# 登录mysql并输入密码,输入密码是看不见的
mysql -u root -p

image-20221107154248528

2、安装完成后的配置

2.1、修改密码

# mysql8 修改密码方式
alter user 'root'@'localhost' identified by '密码'; 
#密码必须含有数字、小写、大写字母、特殊字符,八位

image-20221107154523258

2.2、修改密码规则

要是希望密码可以设置简短一点可以调整密码验证规则

先查看密码验证规则

SHOW VARIABLES LIKE 'validate_password%';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYvmUXEZ-1667818471992)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107154955140.png)]

MySQL 8.0 调整密码验证规则:这和mysql5.x有点差别(5.7中.改成_)

扫描二维码关注公众号,回复: 15485944 查看本文章
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vx3GuHnP-1667818471992)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107183810636.png)]

image-20221107183844563

这样就可以设置简短的密码了

alter user 'root'@'localhost' identified by '密码';    #唯一要求就是密码要大于4位

mysql> alter user 'root'@'localhost' identified by 'admin';
Query OK, 0 rows affected (0.00 sec)

2.3、开启用户远程访问

use mysql  #使用mysql数据库
update user set host = '%' where user = 'root';   #开启用户远程访问
flush privileges;    #命令刷新刚才修改的权限,使其生效,`最好每次修改配置都执行下这条命令`

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。 MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQF3B3G7-1667818471993)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107160102719.png)]

这里需要放行防火墙或安全策略组

防火墙配置可以看我的: 防火墙配置

2.4、Navicat测试连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5iy4vlX-1667818471994)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107160257985.png)]

3、忘记密码怎么办

要是默认密码一直输入不正确进不去mysql控制台或者mysql忘记密码了就修改配置文件免密登录

[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

3.1、修改配置文件

编辑 MySQL 的配置文件vim /etc/my.cnf,加入下面这句skip-grant-tables,保存并退出,然后重启mysql服务。

vim /etc/my.cnf
#按i进入编辑模式shift+g跳到尾行在尾部加入
skip-grant-tables
#按Esc:wq保存退出

image-20221107161014843

3.2、重启mysql服务,登录mysql(这时不需要密码)

systemctl restart mysqld

image-20221107161154750

3.3、将默认的 root 密码置空,并退出命令行

use mysql;
update user set authentication_string='' where user='root';

image-20221107161441844

3.4、删除配置文件中的skip-grant-tables

删除或注释刚才/etc/my.cnf 文件最后的 skip-grant-tables

vim /etc/my.cnf 注释完毕后,保存退出

image-20221107161540125

重启mysql服务, 提示输入密码时直接敲回车,因为我们刚才已经将密码置为空了。

systemctl restart mysqld 
mysql -uroot -p 

3.5、配置密码

使用 ALTER 修改 root 用户密码

ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';

4、问题解决

  • 问题一

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 报错这个是没有注释掉或删除,或者没有重启mysql服务

  • 问题二

mysql> ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘admin’;

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

您的密码不符合当前政策要求,看上方2.2部分
  • 问题三

要是改了远程登录再用

mysql> ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘admin’;

ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@‘localhost’

报错,改用一下命令修改密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin';
#admin是密码
  • 问题四

ERROR 1193 (HY000): Unknown system variable ‘validate_password_length’

MySQL8.0中无效。‘validate_password_policy’ 变量不存在,

解决

8.0用

set global validate_password.policy=0;
set global validate_password.length=1;

5.7用

set global validate_password_policy=0;
set global validate_password_length=1;

5、MYSQL卸载脚本

最后附上删除mysql脚本

vim mysqldel.sh

复制下面的内容进去

rpm -aq | grep -i mysql >rmsql.sh
sed -i -e 's/^/yum remove -y /' rmsql.sh
chmod +777 rmsql.sh
find / -name mysql >my.sh
sed -i -e 's/^/rm -rf /' my.sh
chmod +777 my.sh
./rmsql.sh 
./my.sh 
rm -f my.sh
rm -f rmsql.sh
rm -rf /etc/my.cnf
rm -rf /var/log/mysqld.log

给予执行权限

chmod +777 mysqldel.sh

执行

./mysqldel.sh

删除mysqldel.sh

rm -f mysqldel.sh

检测是否还有未卸载的mysql包

rpm -qa |grep -i mysql

猜你喜欢

转载自blog.csdn.net/crayon0/article/details/127736879