Docker部署mysql

下载镜像

docker pull mysql:5.7.26
docker images|grep mysql

启动容器镜像,

建议在/usr/local/workspace/mysql 下执行以下 docker run 命令

docker run -p 13306:3306 --name mysql5.7 -v /data/mysql/conf:/etc/mysql \
-v /data/mysql/data:/var/lib/mysql -v /data/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=bluewhale#123 -d mysql:5.7.26

同样在/data/mysql/conf 下的 my.cnf 中的配置内容如下:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error      = /logs/error.log
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

命令说明:
-p 13306:3306 : 将容器的 3306 端口映射到主机的 3306 端口
--name my-mysql : 启动后容器名为 my-mysql
-v $PWD/conf:/etc/mysql : 将主机当前目录下的 conf/ 挂载到容器的 /etc/mys
:(conf 目录为 mysql 的配置文件,不挂载也没问题)
-v $PWD/logs:/logs : 将主机当前目录下的 logs 目录挂载到容器的 /logs
:(logs 目录为 mysql 的日志目录,不挂载也没影响)
-v $PWD/data:/var/lib/mysql:将主机当前目录下的 data 目录挂载到容器的 /var/lib/mysql
:(data 目录为 mysql 配置的数据文件存放路径,这个还是建议挂载,是存储数据的,
: 容器 down 掉,还能再次挂载数据。)
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码

配置日志相关

mysql> show global variables like '%log%'; : 查看日志相关配置
show global variables like '%general_log%'; : 查看查询日志记录情况
set global general_log = on; : 打开查询日志命令, 然后在相关的日志地方就能看到
set global general_log_file='/logs/mysql_log.log';: 修改日志文件的位置。query 的输出位置。
:如果命令遇到 ERROR 1231 (42000): Variable 'general_log_file' can't be set to the value of '/logs/mysql_log.log' 的错误。是因为对应的 log 文件没有权限导致的。给相应的权限即可。

general_log 的配置会因为 mysql 的重启导致导致配置失效,即每次需要重新配置。
改为永久配置的方法是: 在mysqld的章节下写入如下的配置:

general_log=ON
general_log_file= /logs/sql_row.log  #但是注意sql-row.log一定要有mysql的写入权限。
关于我
loading