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的写入权限。
