docker笔记5--配置MySQL

 

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

 

1、安装方法

1)下载mysql的docker镜像

 docker pull mysql:5.7 (笔者此处使用5.7版本)

2)新建本地文件 如 data、logs、conf等文件夹用来保存数据

3)启动mysql,可以通过官方文档设置需要的启动方式,笔者使用的启动命令如下(建议写到shell脚本中):

docker run \
--name xgmysql \
-p 3307:3306 \
-v $PWD/data:/var/lib/mysql \
-v $PWD/logs:/logs \
-v $PWD/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=YourPasswd \
-d mysql:5.7

启动后,xgmysql容器相应目录文件都将映射到$PWD/对应目录中,启动后会生成一个root用户,密码为YourPasswd;为了防止和本机3306端口冲突,笔者将容器3306映射到server本机3307端口。

4)mysql启动后,通过docker exec -it xgmysql /bin/bash进入xgmysql容器命令行,然后通过mysql -uroot -p进入mysql命令行,如下图所示:

docker笔记5--配置MySQL_mysql

​dockerhub安装文档​​​:​​https://hub.docker.com/_/mysql/​

 

2、映射Docker MySQL到非本机MySQL Workbench

1)进入mysql命令行,设置其非本机ip访问权限

docker exec -it xgmysql /bin/bash进入xgmysql容器命令行;
mysql -uroot -p进入mysql命令行;
grant all privileges  on *.* to root@'%' identified by "YourPasswd";

flush privileges;

2)在MySQL Workbench中新建链接

docker笔记5--配置MySQL_mysql命令_02

3)通过以上步骤后,若无网络出入站规则限制,我们就可以通过ip,3307,root访问docker版mysql了,由于大多数云服务器供应商都做了网络出站规则限制,因此需要开放相应端口的才能正确访问mysql。

此处,以腾讯云服务器为例,其出站规则设置如下(若需要限制ip访问,则可更改 来源 中的ip网址形式):

docker笔记5--配置MySQL_docker_03

4)sql workbench连接数据库出现10061错误

出现该错误一般为 /etc/mysql/mysql.conf.d/mysqld.cnf中
bind-address        = 127.0.0.1
未注释,导致智能本地访问,将其注释掉即可正常访问远程数据库。

5) mysql初次安装后workbench无法访问问题

该问题通常为host没有配置访问范围、没有设置密码导致的,以下通过创建用户的方式加以说明;
CREATE USER 'xg'@'localhost' IDENTIFIED BY '111111';
GRANT ALL PRIVILEGES ON *.* TO 'xg'@'localhost';
FLUSH PRIVILEGES;
此时workbench本机可以访问mysql;
若将localhost更换为%,则可以匹配到所有主机,即所有主机可以访问;update user set host='%' where user='xg';
若设置plugin为unix_socket,则可以在本地直接使用mysql命令登录,不需要使用mysql -u xg -p,但是使用该方法后无法远程链接到mysql;
update user set plugin='unix_socket' where user='xg';
若设置plugin为‘’或者mysql_native_password,则需要正常使用密码登录,且workbench可以链接mysql;
update user set plugin='' where user='xg';

3、说明

截图系统版本:腾讯云 Ubuntu 16.04 Server (64-bit)