安装MySQL(指定版本)
1 | docker pull mysql:8.0 |
注:值得注意的是,如果主机已经安装了mysql,那么它会占用3306端口,docker中的mysql将无法正常启动。
解决方式:
1.卸载或暂停主机的mysql服务。
暂停主机上的mysql
1 | systemctl stop mysqld |
2.创建容器时,修改docker容器的端口映射
启动MySQL
1
docker run -p 3306:3306 --name mysql80 -v /mydata/mysql80/conf:/etc/mysql/conf.d -v /mydata/mysql80/logs:/logs -v /mydata/mysql80/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
参数讲解:
-p是将docker中mysql端口号3306映射成为12345端口,也可以选择不映射,使用默认的3306
–name mysql: 运行服务的取名
-v是将主机目录下的文件挂载到容器中路径下(/mydata是我本人数存放目录)
-e MYSQL_ROOT_PASSWORD:初始化root用户密码
-d mysql:8.0 : 后台运行mysql8.0
设置远程访问
进入mysql镜像
1 | docker exec -it mysql8 bash |
进入mysql命令行
1 | mysql -uroot -p |
选择mysql数据库
1 | use mysql; |
设置远程访问
mysql8.0.22设置远程连接
1 | update user set host='%' where user='root'; |
1 | flush privileges; |
较旧版本的mysql 和 还需要以下设置:
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; # 设置远程访问 |
ALTER USER ‘root‘@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’; #更新一下用户的密码
1
2```
FLUSH PRIVILEGES; #刷新权限