- CentOS 7.9 64位
- MySQL 8
- 之前都是用docker安装这次想学下alibaba/canal改配置有点麻烦,所以虚拟机安装mysql记录一下安装过程和细节
- Windows下安装可以看我的:windows安装mysql8
mysql
和 mysql-devel
yum install mysql
yum install mysql-devel
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
rpm -qa |grep -i mysql
安装完成后重启mysql
服务后会生成初始化密码
service mysqld restart #重启mysql
或
systemctl restart mysqld
systemctl status mysqld #查看mysql服务状态
mysql8初次安装后,需要先通过
cat /var/log/mysqld.log | grep password
命令查看密码,修改密码时,需要 符合长度为8
,且含有数字、小写或大写字母、特殊字符
[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这就是初始的密码
# 登录mysql并输入密码,输入密码是看不见的
mysql -u root -p
# mysql8 修改密码方式
alter user 'root'@'localhost' identified by '密码';
#密码必须含有数字、小写、大写字母、特殊字符,八位
要是希望密码可以设置简短一点可以调整密码验证规则
先查看密码验证规则
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)
use mysql #使用mysql数据库
update user set host = '%' where user = 'root'; #开启用户远程访问
flush privileges; #命令刷新刚才修改的权限,使其生效,`最好每次修改配置都执行下这条命令`
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。 MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
这里需要放行防火墙或安全策略组
防火墙配置可以看我的: 防火墙配置
要是默认密码一直输入不正确进不去mysql控制台或者mysql忘记密码了就修改配置文件免密登录
[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
编辑 MySQL 的配置文件vim /etc/my.cnf
,加入下面这句skip-grant-tables
,保存并退出,然后重启mysql服务。
vim /etc/my.cnf
#按i进入编辑模式shift+g跳到尾行在尾部加入
skip-grant-tables
#按Esc:wq保存退出
systemctl restart mysqld
use mysql;
update user set authentication_string='' where user='root';
删除或注释刚才/etc/my.cnf
文件最后的 skip-grant-tables
vim /etc/my.cnf 注释完毕后,保存退出
重启mysql服务, 提示输入密码时直接敲回车,因为我们刚才已经将密码置为空了。
systemctl restart mysqld
mysql -uroot -p
使用 ALTER 修改 root 用户密码
ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';
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部分
- 1
要是改了远程登录再用
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是密码
- 1
- 2
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;
- 1
- 2
5.7用
set global validate_password_policy=0; set global validate_password_length=1;
- 1
- 2
最后附上删除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