docker安装mysql

1.拉取mysql镜像

docker pull mysql:5.6

2.通过镜像创建容器

docker run --name mysql -p 3306:3306 -itd --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

3.获取容器内配置文件拷贝到宿主机(挂载配置文件使用)

docker cp mysql:5.6:/etc/mysql/my.cnf /usr/local/mysql/conf/my.cnf(宿主机目录若无该文件会进行创建,若有则覆盖)

4.修改配置文件(根据个人情况进行配置,可选择不配置)

[mysqld]下添加

# my config

log-error      = /logs/error.log      // 错误日志的路径

log-bin         = binlog          // 二进制日志的名字及路径

                     // 相对目录会存在/var/lib/mysql,mysql 8.0已默认开启binlog配置

server-id     = 1             // mysql 5.7后已默认指定为1

general-log    = 1             // 开启查询日志

general-log-file = /logs/query.log       // 指定查询日志路径

5.删除容器  

docker rm -f mysql:5.6

6.挂载目录创建容器

docker run --name mysql -p 3306:3306 -itd --privileged=true --restart=always -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6


以上配置若没有挂载mysql配置文件,如果对外暴露端口访问可能telnet不通,虽然端口进程在但是不通,原因就是mysql配置文件中没有配置端口,虽然映射了端口,但是只是宿主机端口通,当它访问映射端口访问容器内部时端口不通,内部端口不通是因为容器是按默认端口启动的进程,所以默认端口是通的,自定义端口不通,因为进程不是按自定义端口启的,mysql内部端口没有配置对应,因此不通。解决方法是进入容器内部 /etc/mysql/mysql.conf.d/mysqld.cnf 修改配置文件即可,在 mysqld 下面新增port=端口,然后重启容器即可或者就挂载下配置文件,直接在外面修改。(更好的方法是对容器内部就是默认端口,对外宿主机使用自定义端口,这样就不需要进到容器内部修改端口就可以telnet通)

posted @   coder小白  阅读(95)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示