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脚本中):
启动后,xgmysql容器相应目录文件都将映射到$PWD/对应目录中,启动后会生成一个root用户,密码为YourPasswd;为了防止和本机3306端口冲突,笔者将容器3306映射到server本机3307端口。
4)mysql启动后,通过docker exec -it xgmysql /bin/bash进入xgmysql容器命令行,然后通过mysql -uroot -p进入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中新建链接
3)通过以上步骤后,若无网络出入站规则限制,我们就可以通过ip,3307,root访问docker版mysql了,由于大多数云服务器供应商都做了网络出站规则限制,因此需要开放相应端口的才能正确访问mysql。
此处,以腾讯云服务器为例,其出站规则设置如下(若需要限制ip访问,则可更改 来源 中的ip网址形式):
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)