最近项目需要升级,就是分库分表,做下负载均衡【过年踏青的时候游客量暴增,造成服务器短时无法访问和访问缓慢,多家OTA都给我们发出的预警,这应该算是严重的生产事故了。因为去年疫情的影响,今年没有估计到这情况。所以计划是将服务进行拆分,部分服务容器化,防止单点故障以及便于平缓升降级服务】但是在MySQL容器化的时候发现新版的MySQL不会用了。为啥呢,因为一直在用的开启远程数据库访问权限的脚本报错了
脚本是这样的:
grant all privileges on *.* to root@'%' identified by "password";
简简单单的赋权操作:
写了几遍都是错我。那就是有问题了。找了一圈,有个大佬说是版本问题:
MySQL8.0以上版本并不适用这种命令来开启远程访问权限
老哥的方法确实不错。
create user 'root'@'192.168.0.***' identified by 'colin'; # root为用户名,192.168.0.***需要访问的机器的IP,colin是密码
grant all on test1.* to 'root'@'192.168.0.***'; # root为用户名,192.168.0.***需要访问的机器的IP
alter user 'root'@'192.168.0.***' identified with mysql_native_password by 'colin'; # root为用户名,192.168.0.***需要访问的机器的IP,colin是密码
flush privileges; # 刷新权限,让设置生效
后来我改了几个地址:比较docker都是测试的。所以我对所有地址都赋权了:
create user 'root'@'%' identified by 'colin'; # root为用户名,全部需要访问的机器的IP,colin是密码
grant all on test1.* to 'root'@'%'; # root为用户名,全部需要访问的机器的IP /// 这句是为用户赋予数据库权限的,老哥这里没有说清楚,这个test1.* test1是数据库 *是表
alter user 'root'@'%' identified with mysql_native_password by 'colin'; # root为用户名,全部需要访问的机器的IP,colin是密码
flush privileges; # 刷新权限,让设置生效
果然一遍过: