docker里安装mysql并远程连接
安装mysql
mysql-Docker Hub:https://hub.docker.com/_/mysql
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
我执行的命令:-p是将端口号映射
# docker run --name xiaomin-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 28001:3306 -d mysql
启动服务:docker start
停止服务:docker stop
删除容器:docker rm
查看所有容器:docker ps -a
navicat远程连接mysql
坑一:端口号一定要写映射后的端口号28001,否则会报错1130
查询这个错误时发现是权限问题,于是尝试去修改权限:
1、linux上登录mysql
坑二:一定要先进入容器,否则会报错1045(28000)
2、进入mysql容器:
# docker exec -it xiaomin-mysql bash
3、登录mysql
4、执行命令修改权限
update user set host = '%' where user = 'root';
5、刷新权限表
FLUSH PRIVILEGES;
执行完之后发现还是报错,把端口号修改正确后,出现了另一个错2059:
坑三:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
于是更改加密规则:
mysql -uroot -ppassword #登录
use mysql; #选择数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码
FLUSH PRIVILEGES; #刷新权限
改完之后依然报错!!!
坑四:执行上述命令时,除了修改password,还要将localhost修改为%,修改后成功连接上!