阿里云ecs服务器在docker上安装mysql5.6 远程连接出错access denied for user root

  1. 首先我的错误是这样的
access denied for user root@ip地址 (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
  1. 进入mysql容器内部
docker exec -it 容器id bash
  1. mysql -uroot -p123 进入了数据库
  2. 执行如图在这里插入图片描述
  3. select User,Host,authentication_string from user;
    在这里插入图片描述
    我这里给root开放了所有主机的连接mysql权限 %的意思,大家可能只有root localhost
  4. 开放权限的语句
    在这里插入图片描述
    identified by 后面的是root对应的认证密码。
select User,Host,authentication_string from user;
flush privileges; 

这句的意思是从mysql数据库的grant表中重新加载权限数据
因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
8. 现在就可以连接上了
9. 在这里插入图片描述

用到的一些语法以及命令

显示表结构 desc 表名;
显示表列 show columns from 表名;
docker服务重启

  1. 守护进程重启
    sudo systemctl daemon-reload
  2. 重启docker服务
    sudo systemctl restart docker
  3. 关闭docker
    sudo systemctl stop docker
  4. centos7开放端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp

firewall-cmd --reload

在这里插入图片描述

注意 如果用的是阿里云ecs 需要开放安全组mysql3306端口号。在这里插入图片描述

发布了84 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yidou120/article/details/104208115