版权声明:本文为博主九师兄(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
这里是怎么映射的
扫描二维码关注公众号,回复:
3668494 查看本文章
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