Docker部署MySQL
一、拉取MySQL镜像
1、拉取命令docker pull mysql
2、查看镜像,检查是否拉取成功docker images
二、创建MySQL容器
1、建立目录映射mkdir /opt
mkdir /opt/mysql
mkdir /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 不同
4、使用Navicat 或者 MySQL Workbench 远程连接mysql
我们在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:
host: 127.0.0.1
port: 3306
user: root
password: 123456
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
这些都在下方我的微信公众号里免费获取~
相关文章
- mysql数据库的初始化及相关配置
- 第14章_MySQL事务日志
- 【Docker 基础教程】Mysql主从服务搭建------Mysql容器闪退及容器名冲突系列问题
- docker中创建MySQL及在外部使用Navicat连接***
- docker-compose使用volume部署mysql时permission deny问题解决
- 如何利用docker快速构建MySQL主从复制环境
- 05. SpringCloud实战项目-Docker安装mysql
- Docker部署MySQL
- Docker 下 mysql 简单的 主从复制实现
- 线上MySQL慢查询现象案例--Impossible WHERE noticed after reading const tables
- Windows上安装多个MySQL实例(转)
- 【MySQL数据库基本操作(三) ---MySQL窗口下 数据的查询、几个简单语法】
- 【Mysql】字段类型datetime,timeStamp,time的区别
- mysql怎么卸载干净
- 数据库迁移之从oracle 到 MySQL
- docker部署mysql报错:find: ‘/var/lib/mysql/‘: Permission denied
- Docker篇之如何部署MySQL
- JDK.TomCat.Mysql安装部署
- MySQL_数据库的约束
- mysql memory表性能测试以及使用场景
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- docker环境下mysql数据库的备份
- 使用Docker安装mysql,挂载外部配置和数据