直接回答:用 docker run 启动 MySQL 官方镜像,加上 -e MYSQL_ROOT_PASSWORD 和 -p 3306:3306 就能用;默认 root 只允许本机登录,要远程连接得再建一个允许 % 的账号。

1、查询mysql

命令:docker search mysql

img

2、安装mysql

命令:docker pull mysql

img

3、查看镜像

命令:docker images

img

4、在opt下创建文件夹

命令:cd /opt/

命令:mkdir mysql_docker

命令:cd mysql_docker/

命令:echo $PWD

img

5、启动mysql容器,在var/lib/docker/containers/下查看容器

命令:docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d -i -p 3306:3306 mysql:latest

  • 如果上面命令报错,先把*-e TZ=Asia/Shanghai*去掉

img

命令:cd /var/lib/docker/containers/

6、查看mysql进程

命令:docker ps -a

img

7、进入mysql容器,并登陆mysql

命令:docker exec -it mysqlserver bash

命令:mysql -u root -p

img

8、开启远程访问权限

命令:use mysql;

命令:select host,user from user;

命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

命令:flush privileges;

img

img

镜像里面 root用户已经有远程连接权限在里面,所以不需要去设置,只是模式不一样才导致无法连接,把root用户的密码改成 mysql_native_password 模式,即可远程连接

如果没有root@%的用户需要进行下面的操作

1
2
3
4
5
6
7
8
9
# 创建用户root@%
mysql>CREATE USER 'root'@'%' IDENTIFIED BY 'root';
# 赋予权限,all *.*这两个的意思是all:所有权限;*.* 所有表;
mysql>GRANT ALL ON *.* TO 'root'@'%';
mysql> flush privileges;
#修改root用户密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新权限
mysql> flush privileges;

查看docker日志

命令:docker logs -f --tail 10 a4dac74d48f7

img

常用命令

  • 查看进程

命令:docker ps -a

  • 关闭docker中mysql容器

命令:docker stop mysqlserver

img

  • 重启docker中mysql重启

img

  • 重启docker

命令:systemctl restart docker

  • 关闭docker

命令:systemctl stop docker

img

这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。

站内搜索

没有找到内容!