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