抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

本地navicat连接本地docker容器中mysql

😄 @Auther by sizaif

📆 2021-06-24 17:54:18

[TOC]

修订历史

  • 2021-06-24 17:54:31: 首次编辑
  • 2021-06-24 22:28:18: update bug

具体步骤

如果已经有了mysql镜像, 直接跳过,到docker mysql容器中

docker 拉去 mysql 镜像

$ docker pull mysql  

启动MySQL镜像

$ docker run --name=mysql -itd -p <宿主机映射端口>:3306 -e MYSQL_ROOT_PASSWORD=<密码> mysql  

进入MySQL容器

$ docker exec -it mysql /bin/bash

进入MySQL

设置允许外部登录的mysql用户

$ mysql -uroot -p<密码>
# 设置允许外部登录的mysql用户: 'test' host监听地址:'%' 密码 test
$ mysql> CREATE USER If Not Exists 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test';
# 赋予用户权限
$ mysql> GRANT all privileges ON test.* TO 'test'@'%' identified by 'test';
# 刷新
$ mysql>flush privileges;

修改mysql配置,允许任意主机访问

# 修改 mysqld.cnf中 bind-address监听地址loaclhst为0.0.0.0
$ sed -i 's/^bind-address.*$/bind-address=0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
# 重启mysql
$ service mysql restart

若嫌进入mysql太麻烦直接运行如下命令,替换掉<>中内容

#修改mysql配置,允许任意主机访问
$ sed -i 's/^bind-address.*$/bind-address=0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
$ service mysql restart

# 新建允许外部登录的mysql用户:'<test>'@'%',密码<test>
USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'`
PW=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'`
mysql -u${USER} -p${PW} -e"CREATE USER If Not Exists '<test>'@'%' IDENTIFIED WITH mysql_native_password BY '<test>';"
mysql -u${USER} -p${PW} -e"GRANT all privileges ON <your mysql continer name>.* TO '<test>'@'%' identified by '<test>';flush privileges;"

然后远程连接【宿主机ip:<宿主机映射端口>】,使用新建的用户登录mysql即可。

>$ docker run --name=mysql -itd -p <宿主机映射端口>:3306 -e MYSQL_ROOT_PASSWORD=<密码> mysql  

image-20210624181630341

问题发现整理

  1. 报2013错误

    image-20210624181915547

    这个原因一般是由mysql中已经设定用户的远程host为’%',但是mysqld.cnf 或 my.cnf中 bind-address 监听地址为localhost导致

  2. 报1045错误 Access defined

    一般是由于密码不正确或用户不正确导致

评论吧



本站总访问量为 访客数为

鲁 ICP 备 20018157 号-1
Copyright 2021 - 2022 sizaif. All Rights Reserved