DockeDesktop-MySQL镜像踩坑
本地先创建好相关文件夹以及配置文件,my.conf复制粘贴以下内容。
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
Docker :
//搜索镜像
docker search mysql
//拉取镜像到本地
docker pull mysql:lastest
//运行mysql 设置容器与本地文件路径的对应关系,设置root用户密码
docker run -p 3306:3306 -p 33060:33060 --name mysqltest -v /.../mydata/mysql/log:/var/log/mysql -v /.../mydata/mysql/data:/var/lib/mysql -v /.../mydata/mysql/config:/etc/mysql/conf.d:rw -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
//查看已运行的容器
docker ps
DockerDesktop
- 下载: 官网
- 配置国内镜像源
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
- 搜索mysql镜像,下载==》docker search mysql
4.在本地镜像点击run,填写相关文件路径配置,以及root用户密码配置
以及容器名称。
5.我们就可以在容器仓库内看到已运行的容器了。
6.点击容器名称,可以看到启动成功的日志,我们点击终端Terminal。
7.连接到容器后台,切换mysql命令行并登陆root用户,查看初始化后的库信息,如果已经存在则不必修改,如不存在,需要修改user表中访问权限,%表示可以远程登录,并且是除服务器外的其他任何终端,任意IP都可登录。便于使用可视化工具navicat链接。
//切换mysql命令行
mysql -uroot -p123456
//展示初始化的数据库
SHOW DATABASES
//切换库
USE MYSQL;
//查看用户表信息
SELECT Host,User from user;
//更改root用户访问权限
UPDATE user set Host='%' Where User ='root';
//刷新权限
FLUSH PRIVILEGES;
8.最后测试下远程工具链接。
总结:可视化工具操作更简单便捷,其实也是执行的docker底层命令,使用DockerDesktop 和直接使用Docker命令还是有些不同点的。组合使用也不冲突,每一步其实都是对应的,先行动起来
问题:
bug | 解决办法 |
---|---|
Exited (1) 8seconds ago | 本地挂在目录配置m y.conf文件,或者通过DockerDesktop终端在里面编辑 |
The path /.../mydata/mysql/log is not shared from the host and is not known to Docker. | 没有使用完整的全路径导致Docker无法识别,配置全路径即可 |
mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory) | docker命令执行启动,因为mysql版本不同容器文件路径不同,需要在命令中指定/etc/mysql/conf.d/;用/etc/mysql启动会失败报错 |
Access denied for user ‘root‘@‘%‘ to database | 远程测试链接时被拒绝,通过查看user表,更改root用户的Host为"%"即可解决 |