docker部署mysql实现远程访问

查看Docker MySQL文档

docker 下载
MySQL文档地址:
https://hub.docker.com/_/mysql/

第一步,拉取MySQL镜像

docker pull mysql # 拉取最新版mysql镜像

之后docker会自动拉取(下载)MySQL镜像。

拉取成功后我们查看一下:

docker images

第二步,创建并启动一个MySQL容器

输入以下命令:

docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
  • –name:给新创建的容器命名,此处命名为mysqlserver
  • -e:配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个)
  • -d:成功启动容器后输出容器的完整ID
  • 最后一个mysql指的是mysql镜像名字

如果要建立目录映射

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
  • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

到这里我们查看容器运行状态:

docker ps

可以看到容器的简写ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等

8.0 报错 mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory) 使用以下方式运行

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

第三步,测试连接MySQL

  • 1、命令连接
docker exec -it  mysql /bin/bash

或者

docker exec -it mysql bash

docker exec:在运行的容器中执行命令
语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端
  • -d :分离模式: 在后台运行

进入mysql

mysql -h localhost -u root -p

使用navicat远程连接

若访问不成功请查看是否开启远程连接

mysql> use mysql;
mysql> select user,host from user;
host user
% root
localhost mysql.infoschema
localhost mysql.session
localhost mysql.sys
localhost root

如果host没有% 就需要执行

8.0版本

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ,'password'改成你的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 ,'password'是你的密码
grant all privileges  on *.* to root@'%' identified by "password";
  • password 为你新设置的密码

刷新权限

FLUSH PRIVILEGES; 

如果连接状态为 2003
可能造成出现的原因:

  • 网络不通畅
  • mysql 服务未启动
  • 防火墙未开放端口
posted @ 2021-04-17 16:41  青杉  阅读(1183)  评论(0编辑  收藏  举报