阿里云docker安装Msql,将数据挂载至某个文件夹下并设置Navicat链接

特别说明,阿里云上使用docker装的时候,需要注意

* 阿里云后台开通端口。

* 阿里云服务器里面的防火墙。

依据自己的需求去docker里面search images 。

这里说明一下mysql 8.0 以后的版本在授权远程链接的时候,与之前的版本是有区别的。后面会详细说到。

1.从docker 上面搜索mysql 

docker search mysql

2.依据docker search 出来的结果pull 对应的镜像,或者直接pull 自己需要的版本。我这里是直接pull 指定的版本

docker pull mysql:5.7.28

3.下载完毕以后,将mysql 的data,conf 目录都挂载至机器某个文件夹下,我这里挂载的是/data/tadopDataProject/mysql/13306

docker run --name mysql_13306 -d -e MYSQL_ROOT_PASSWORD=123456 -v /data/tadopDataProject/mysql/13306/data:/var/lib/mysql -v /data/tadopDataProject/mysql/13306/conf:/etc/mysql/ -p 13306:3306 mysql:5.7.28

run:启动容器的命令

 --name:并容器的命名

 -d:让容器后台运行(其他对应参数:-i交互式操作,-t开启一个伪终端)

 -e MYSQL_ROOT_PASSWORD:初始化root用户的密码为123456

 -p:将容器的3306端口映射到主机的3307端口

-v: 挂载目录,  (宿主目录:容器目录)

 mysql:5.7.28:mysql镜像的仓库名与标签,也可直接通过镜像id启动

4.启动完成以后,查看镜像是否启动成功,如果成功,则准备授权。

docker ps   查看是否启动成功


[root@aliyun-ap2 data]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                                NAMES
11e3679fc52c        mysql:5.7.28                                           "docker-entrypoint.s…"   33 minutes ago      Up 33 minutes       33060/tcp, 0.0.0.0:13306->3306/tcp   mysql_13306

 5.查看端口是否正常

netstat -anp |grep 13306

[root@aliyun-ap2 data]# netstat -anp |grep 13306
tcp6       0      0 :::13306                :::*                    LISTEN      9696/docker-proxy   

 6.进入容器内并登陆

如果成功则执行:
docker exec -it mysql_13306 bash  

mysql -u root -p 
输入启动时设置的密码,我这里是123456

7.查看授权状态,有的数据库版本是已经对root 账户对外授权过了,就不需要处理,但有的需要。

登陆以后,查看数据库版本是
[root@aliyun-ap2 3305]# docker exec -it mysql_13306 bash
root@4b30712295de:/# 
root@4b30712295de:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)

mysql> select VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.28    |
+-----------+
1 row in set (0.00 sec)

查看mysql的端口
show global variables like 'port';

查看授权状态
select host,user,plugin,authentication_string from mysql.user;

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+---------------+-----------------------+-------------------------------------------+
| host      | user          | plugin                | authentication_string                     |
+-----------+---------------+-----------------------+-------------------------------------------+
| localhost | root          | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| %         | root          | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)

我这里是host 里面的 % 表示对外所有地址允许链接,是已经授权过的了。

但是有的不是,特别是8.0以上的版本需要单独处理。

对于非8.0以上的版本,可以用以下方式处理:

mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  
Query OK, 0 rows affected (0.01 sec)  
mysql>   
mysql> flush privileges; 
Query OK, 0 rows affected (0.01 sec)  
 或者 
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.01 sec)  
mysql> flush privileges;  
如果
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
命令执行不成功,可更换成
grant all privileges on *.* to 'root'@'%' with grant option;

其中可以通过‘root’@'ip' 的形式来指定允许访问ip地址,具体的请自行查找。 

而对于8.0以上的版本,需要创建用户,并对用户授权:

对于8.0以上需要创建用户再授权:
create user 'test'@'%' identified by '123456';
grant all privileges on *.* to test@'%' with grant option;

flush privileges; 

授权完以后查看是否成功
select host,user,plugin,authentication_string from mysql.user;

处理完毕以后:退出mysql

退出mysql
exit; 
退出docker
exit;

最后,查看一下是否在阿里云的管理后台把mysql 需要的端口打开,以及阿里云服务器上面的防火墙状态,如果开着防火墙,需要把对应的端口开放出来。

 

 

命令总结:

docker search mysql   搜索docker 镜像

docker pull mysql:5.7.28   拉取指定版本镜像

启动镜像并挂载

docker run --name mysql_13306 -d -e MYSQL_ROOT_PASSWORD=123456 -v /data/tadopDataProject/mysql/13306/data:/var/lib/mysql -v /data/tadopDataProject/mysql/13306/conf:/etc/mysql/ -p 13306:3306 mysql:5.7.28

进入容器内
docker exec -it mysql_13306 bash

登录
mysql -u root -p 

查看端口
show global variables like 'port';
查看版本
select VERSION();
查看授权用户
select host,user,plugin,authentication_string from mysql.user;
授权
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
grant all privileges on *.* to 'root'@'%' with grant option;
创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
刷新
flush privileges; 
端口检测
netstat -anp |grep 13306

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值