Docer安装MySQL并且远程登录

版权声明:本文为博主九师兄(QQ群:spark源代码 198279782 欢迎来探讨技术)原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21383435/article/details/83181865

1.查找版本

查找Docker Hub上的mysql镜像

runoob@runoob:/mysql$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relati...   2529      [OK]       
mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]
drupaldocker/mysql       MySQL for Drupal                                2                    [OK]
azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]
...

2.安装指定版本

这里我们拉取官方的镜像,标签为5.6

runoob@runoob:~/mysql$ docker pull mysql:5.6

# docker 中下载 mysql,这个是安装最新版本
docker pull mysql

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.6的镜像。

runoob@runoob:~/mysql$ docker images |grep mysql
mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

3. 启动

3.1 启动

docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。

#启动
# docker run是启动容器的命令;
# i	是交互式操作,
# t	是一个终端,
# d	指的是在后台运行,
# -p 3307:3306:将容器的 3306 端口映射到主机的 3306 端口。
# mysql	指运行mysql镜像,

docker run --name docker_mysql -p 3317:3306 -e MYSQL_ROOT_PASSWORD=lcclove123 -d mysql:5.6

进入容器

# 查看所有的容器
root@b3b1d61142df:/# lcc@lcc ~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
804d20b31f6a        mysql:5.6           "docker-entrypoint.s…"   14 seconds ago      Up 39 seconds       0.0.0.0:3317->3306/tcp   docker_mysql
lcc@lcc ~$

#进入容器  docker exec -it 容器名称 bash
lcc@lcc ~$ docker exec -it docker_mysql bash
root@c944fd895fa9:/# pwd
/


# 本地登录 mysql -u 用户名 -P 端口 -h 地址IP  -p 密码
root@ad424be7a46b:/# mysql -u root -P 3317 -h localhost  -p
Enter password:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
mysql> use mysql ;
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------+-----------------------+-----------------------+
| host      | user | plugin                | authentication_string |
+-----------+------+-----------------------+-----------------------+
| localhost | root | mysql_native_password |                       |
| %         | root | mysql_native_password |                       |
+-----------+------+-----------------------+-----------------------+
2 rows in set (0.00 sec)

mysql>

4.远程访问

可看到root用户是%,也就是可以直接远程连接的,

试试看,注意这里查看docker容器的ip是没有用的

lcc@lcc ~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
984480b103ca        mysql:5.6           "docker-entrypoint.s…"   2 minutes ago       Up 3 minutes        0.0.0.0:3317->3306/tcp   docker_mysql
lcc@lcc ~$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 984480b103ca
172.17.0.2
lcc@lcc ~$

0.0.0.0:3317->3306/tcp的意思是将宿主机的3317端口映射到docker容器的3306端口(外界访问3317端口就是访问docker里面的Mysql)

获取docker容器的ip是没有用的,mac下ping不通

连接
在这里插入图片描述

密码为:lcclove123
ip:注意,要看0.0.0.0:3317->3306/tcp这里是怎么映射的

5. 授权

如果不是%符号,需要授权

mysql>
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'Lzslov123!';
Query OK, 0 rows affected (0.05 sec)
mysql>;

添加远程登录用户用户名:lcc  密码:Lzslov123!


mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.01 sec)
添加一个用户
mysql> create user lcc_docker  identified by 'lcclov123!';
Query OK, 0 rows affected (0.06 sec)

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | lcc_docker       |
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
6 rows in set (0.01 sec)

mysql>;
host为%号,代表从哪个主机都可以用hive2这个用户去访问。
但是如果不是就需要我们去授权。
格式:grant all privileges on *.* to 哪个用户名@'%' identified by "用户对应的密码" with grant option;      
或者 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';

mysql> grant all privileges on *.* to lcc_docker@'%' identified by "lcclov123!" 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> exit

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/83181865
今日推荐