目录
- 1、安装 MySQL8
- 1.1、安装 `mysql` 和 `mysql-devel`
- 1.2、安装 `mysql-server`
- 1.3、安装完成查看已安装的包
- 1.4、重启mysql服务
- 1.5 、查看初始化的密码
- 1.6、登录MYSQL
- 2、安装完成后的配置
- 2.1、修改密码
- 2.2、修改密码规则
- 2.3、开启用户远程访问
- 2.4、Navicat测试连接
- 3、忘记密码怎么办
- 3.1、修改配置文件
- 3.2、重启mysql服务,登录mysql(这时不需要密码)
- 3.3、将默认的 root 密码置空,并退出命令行
- 3.4、删除配置文件中的skip-grant-tables
- 3.5、配置密码
- 4、问题解决
- 5、MYSQL卸载脚本
- CentOS 7.9 64位
- MySQL 8
- 之前都是用docker安装这次想学下alibaba/canal改配置有点麻烦,所以虚拟机安装mysql记录一下安装过程和细节
- Windows下安装可以看我的:windows安装mysql8
1、安装 MySQL8
1.1、安装 mysql
和 mysql-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
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
2、安装完成后的配置
2.1、修改密码
# mysql8 修改密码方式
alter user 'root'@'localhost' identified by '密码';
#密码必须含有数字、小写、大写字母、特殊字符,八位
2.2、修改密码规则
要是希望密码可以设置简短一点可以调整密码验证规则
先查看密码验证规则
SHOW VARIABLES LIKE 'validate_password%';
MySQL 8.0 调整密码验证规则:这和mysql5.x有点差别(5.7中.改成_)
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)
这样就可以设置简短的密码了
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服务"的情况下直接生效,那么就需要执行这个命令。
这里需要放行防火墙或安全策略组
防火墙配置可以看我的: 防火墙配置
2.4、Navicat测试连接
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保存退出
3.2、重启mysql服务,登录mysql(这时不需要密码)
systemctl restart mysqld
3.3、将默认的 root 密码置空,并退出命令行
use mysql;
update user set authentication_string='' where user='root';
3.4、删除配置文件中的skip-grant-tables
删除或注释刚才/etc/my.cnf
文件最后的 skip-grant-tables
vim /etc/my.cnf 注释完毕后,保存退出
重启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