Docker部署MySQL
一、拉取MySQL镜像
1、拉取命令docker pull mysql
2、查看镜像,检查是否拉取成功docker images

二、创建MySQL容器
1、建立目录映射mkdir /optmkdir /opt/mysqlmkdir /opt/mysql/conf/mkdir /opt/mysql/logs/mkdir /opt/mysql/data/
2、创建my.cnf配置文件touch /opt/mysql/my.cnf
my.cnf添加以下内容:
-
[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
3、创建容器,并后台启动
-
docker run --restart=always --privileged=true \ -
-v /opt/mysql/data/:/var/lib/mysql \ -
-v /opt/mysql/logs/:/var/log/mysql \ -
-v /opt/mysql/conf/:/etc/mysql \ -
-v /opt/mysql/my.cnf:/etc/mysql/my.cnf \ -
-p 3306:3306 --name my-mysql \ -
-e MYSQL_ROOT_PASSWORD=123456 -d mysql
- -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
- --restart=always: 当Docker 重启时,容器会自动启动。
- --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
⚠️注意:启动mysql报如下错误,那是因为MYSQL新特性secure_file_priv对读写文件的影响。
-
ERROR: mysqld failed while attempting to check config -
command was: "mysqld --verbose --help" -
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory) -
2019-09-14T09:52:51.015937Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files -
2019-09-14T09:52:51.018328Z 0 [ERROR] [MY-010119] [Server] Aborting
-
解决问题: -
windows下:修改my.ini 在[mysqld]内加入secure_file_priv=/var/lib/mysql -
linux下:修改my.cnf 在[mysqld]内加入secure_file_priv=/var/lib/mysql
三、连接MySQL
1、进入mysql容器docker exec -it my_mysql /bin/bash
2、登陆mysqlmysql -u root -p
3、mysql 8 设置允许远程用户访问update user set host = '%' where user = 'root' and host='localhost'; # 更新root - localhost 为 root - %
GRANT ALL ON *.* TO 'root'@'%'; # 设置允许远程用户访问
flush privileges;# 刷新权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';#更新用户加密方式,mysql8默认的加密方式为caching_sha2_password 与mysql5的加密方式mysql_native_password 不同

image.png

image.png

image.png
4、使用Navicat 或者 MySQL Workbench 远程连接mysql
我们在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:
-
host: 127.0.0.1 -
port: 3306 -
user: root -
password: 123456

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】


更多推荐



所有评论(0)