Docker安装及使用Mysql

 

 

我们可以下拉别人的Mysql镜像也可以通过Dockerfile自己构建Mysql镜像,方便起见,我是下拉的docker官方的Mysql镜像

1.使用如下命令查看dockerhub中的所有mysql镜像

docker search mysql

2.官方的mysql镜像的名称为mysql,所以我们输入以下命令进行下拉

docker pull mysql

3.运行一个mysql容器

docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql


--name               后面是这个镜像的名称
-p 3306:3306   暴露3306端口,表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个)

-e MYSQL_ROOT_PASSWORD=123456 设置root用户密码
-d                       表示使用守护进程运行,即服务挂在后台

4.登录容器的mysql,设置访问权限,以及导入一些数据库文件

我们的docker容器中的mysql一般都是需要允许远程连接的,所以我们进行如下设置

docker exec -it first-mysql bash

exec命令            在容器first-mysql中开启一个交互模式的终端

-i                          即使没有附加也保持STDIN 打开

-t                          分配一个伪终端

连接到容器mysql

mysql -hlocalhost -uroot -p123456

添加一个root用户,主机为%(意为任何主机)

create user 'root'@'%' identified by '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

//创建一个用户,mysql 8 之后要求先创建用户,再授权,而不能在授权时创建用户

create user 'root'@'%' identified by '123456';

//授权用户为超级管理用户

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

//刷新权限

FLUSH PRIVILEGES;

5.暴露centos服务器的3306端口

开启系统防火墙:

systemctl start firewall.service

开启端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

 --zone #作用域

--add-port=3306/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

需要重启服务器 

firewall-cmd --reload

查看开放的端口:

firewall-cmd --list-ports

到此为止,我们的mysql服务器就创建成功了,我们可以在本地使用 Navicat for MySQL等mysql图形化界面进行连接啦。注意:

1.连接的主机名为centos服务器的ip地址

2.如果mysql的版本为8.0以上,则连接时可能会报1251的错误,这是因为:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。解决方法如下:

//更改用户密码验证方式

ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

//刷新更改密码验证方式之后的密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

//刷新权限

FLUSH PRIVILEGES;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值