该篇博客记录我访问线上MySQL,从安装到配置,再到部署踩过的坑。
安装
环境:CentOS7
MySQL版本:8.0
-
官网下载rpm包拷贝到服务器
-
yum localinstall把它添加到本地
-
安装:yum install mysql-community-server
-
启动测试: service mysqld start
修改密码
-
刚刚启动成功之后, 用命令查看默认密码并且登录
查看:cat /var/log/mysqld.log | grep password
登陆:mysql -u root -p 然后输入密码
-
修改密码
set global validate_password.policy=0;
set global validate_password.length=1;
ALTER USER “root”@“localhost” IDENTIFIED BY “123456”; // 新密码为123456
-
exit 退出 mysql -u root -p 然后输入密码即可登录
授权远程访问
-
增加mysql访问权限
进入表mysql.user表,select host,user from user;,可以看到有几个root用户,其中有一个是host='127.0.0.1’的root用户,通过update语句把这个用户的host直接更为‘%’。这个符号是通配符,可以理解为所有IP(host)都能通过root用户访问。use mysql
update user set host= ‘%’ where user = ‘root’; -
刷新权限:flush privileges;
测试外网连接mysql服务器,还是不能连上的话查看云主机安全组配置,我这里直接改成放通全部端口
也可以只开启部分ip和端口,配置好之后要在 实例-更多-安全组-配置安全组 启动生效。
重置密码
有的时候输入正确的密码也无法登陆,真的玄学。
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
跳过密码登录:
-
vim /etc/my.cnf
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,保存退出
重启服务生效:systemctl restart mysqld.service -
直接在命令行敲mysql,不用输入密码就能登录
-
输入flush privileges
-
重新设置密码为123456:ALTER USER “root”@“localhost” IDENTIFIED BY “123456”;
出现错误ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
参考其他博客说是自定义密码比较简单,就出现了不符合密码策略的问题。
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看
输入设值语句 “ set global validate_password.policy=LOW; ” 注意变量名要和表中对应
对密码长度进行设值, “ set global validate_password.length=6; ” -
再次重设密码:ALTER USER “root”@“localhost” IDENTIFIED BY “123456”;
再次报错:ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@‘localhost’
然后我查看user表中的user数据:select user,host from user;
注意 我这里的root对应的是%,不是大部分博客中的localhost
改成:ALTER USER ‘root’@’%’ IDENTIFIED BY ‘123456’; -
退出把skip-grant-tables删掉
-
完事。。。