阿里云ecs服务器在docker上安装mysql5.6 远程连接出错access denied for user root
程序员文章站
2024-03-25 14:08:58
...
- 首先我的错误是这样的
access denied for user aaa@qq.com地址 (using password:YES) 1045
这里using password 是yes 说明我们连接mysql的密码是对的,但是是root拒绝访问。
所以出现错误的原因就是root拒绝远程连接,我们只要把root的权限设置所有远程主机可以连接就可以了。
2. 我在docker 上运行容器的命令是这样,密码也设置了123
docker run -p 3306:3306 --name mysql -v /yzf/mysql/conf:/etc/mysql/conf.d -v /yzf/mysql/logs:/logs -v /yzf/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.6
- 进入mysql容器内部
docker exec -it 容器id bash
-
mysql -uroot -p123
进入了数据库 - 执行如图
-
select User,Host,authentication_string from user;
我这里给root开放了所有主机的连接mysql权限 %的意思,大家可能只有root localhost - 开放权限的语句
identified by 后面的是root对应的认证密码。
select User,Host,authentication_string from user;
flush privileges;
这句的意思是从mysql数据库的grant表中重新加载权限数据
因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
8. 现在就可以连接上了
9.
用到的一些语法以及命令
显示表结构 desc 表名;
显示表列 show columns from 表名;
docker服务重启
- 守护进程重启
sudo systemctl daemon-reload
- 重启docker服务
sudo systemctl restart docker
- 关闭docker
sudo systemctl stop docker
- centos7开放端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
注意 如果用的是阿里云ecs 需要开放安全组mysql3306端口号。