docker中安装mysql
sudo docker pull mysql:5.7
查看镜像 sudo docker images
切换到root用户 su root 提示要输入密码, 默认的密码为 vagrant
启动mysql
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
其中-p 3306:3306 为端口映射, 把容器中的3306映射到宿主机的3306端口中 –name mysql 为给容器起个名叫做 mysql /var/log/mysql 和 /etc/mysql 为mysql 容器内的日志和配置目录 /var/lib/mysql 为容器内mysql的数据。
如下的三条命令, 分别为进行宿主机的挂载 。
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root
为给root用户的密码为root 使用navicat进行远程连接
访问容器内部命令 , 其中mysql为容器的名称, 可以更换为容器的id开头的几位, 与其他的区分开即可。
docker exec -it mysql /bin/bash
修改mysql的配置
[root@localhost conf]# cd /mydata/mysql/conf
[root@localhost conf]# vi my.conf
在my.conf中复制如下的配置
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql容器
[root@hadoop-104 conf]# docker restart mysql
mysql
[root@hadoop-104 conf]#
进入容器查看配置:
[root@hadoop-104 conf]# docker exec -it mysql /bin/bash
root@b3a74e031bd7:/# whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql
root@b3a74e031bd7:/# ls /etc/mysql
my.cnf
root@b3a74e031bd7:/# cat /etc/mysql/my.cnf
可以看到容器中的mysql配置, 与外部宿主机的配置相同 。
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
root@b3a74e031bd7:/#
设置启动docker时,即运行mysql
[root@localhost conf]# docker update mysql --restart=always
mysql
[root@localhost conf]#