原创

docker安装mysql 8 并配置远程连接

第一步:下载mysql镜像镜像

 docker pull mysql

默认是下载最新稳定版

第二步:启动mysql镜像

docker run -p 3306:3306 --name mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=root -i -d centos/mysql-57-centos7




[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql/mysql-8.0.16-el7-x86_64
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

  1. --name 是镜像的别名
  2. -p 将3306映射到3306(docker是个虚拟机有自己的端口)
  3. -e MYSQL_ROOT_PASSWORD=mysqlpassword 设置mysql 服务器密码(后面需要,一定记住)
  4. -d 后端启动
  5. 启动的镜像名称(可以用id代替)

第三步:查询启动的镜像

 docker ps

如下:

第四步:进入容器

 docker exec -it dockermysql bash

dockermysql是镜像的名字 ,可以用id替代

第五步:登录mysql

 mysql -u root -p

然后输入上面设置的密码

第六步:设置远程访问

切换数据库(默认应该就是这个,不切换也行,保险起见切换一下)

use mysql;

更改远程链接授权

grant all privileges on *.* to 'root'@'%';

第七步:navicat链接时报 2059 错误

报错原因是加密方式问题

查询一下:

select Host,User,plugin from user;

没有修改前结果如下:

执行修改命令:

alter user 'root'@'%' identified with mysql_native_password by 'yourPassword';

修改成你的mysql密码

修改成功后结果如下:

正文到此结束