下载MySQL镜像
首先需下载MySQL镜像文件,可通过国内加速镜像仓库下载,下载成功后系统镜像显示:
[jamza@A23488809 master]$
[jamza@A23488809 master]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2151acc12881 2 weeks ago 444.6 MB
consul latest 9c9974471250 3 months ago 108.3 MB
busybox/x86_64 latest 3a093384ac30 7 months ago 1.199 MB
busybox latest 3a093384ac30 7 months ago 1.199 MB
centos latest 1e1148e4cc2c 8 months ago 201.8 MB
django latest eb40dcf64078 2 years ago 436 MB
[jamza@A23488809 master]$
创建MySQL容器并登录
创建MySQL容器并登录:
#创建好mysql容器
sudo docker run -p 3306:3306 --name mysql -v /home/jamza/test/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
#进入容器
sudo docker exec -it mysql /bin/bash
#登陆容器内数据库
mysql -u root -p 设置的密码
此时,MySQL的服务端与客户端是运行在同一个主机上,mysql是客户端的应用程序。
##远程登录服务端
由于MySQL的设计为服务端和客户端的模式,因此无论服务端运行在何处,通过客户端程序与可达的网络,即可登录服务端。
比如,在10.46.75.9主机上运行mysql容器,在容器中运行的是mysql服务端,容器通过暴露3306端口给主机,即可通过10.46.75.9主机的3306端口访问MySQL服务端。
在另一台主机10.46.75.60上运行mysql客户端程序。并连接到10.46.75.9主机上的MySQL服务端:
[jamza@localhost ~]$ mysql -h 10.46.75.9 -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.17 MySQL Community Server - GPL
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
MySQL [(none)]>
MySQL [(none)]>
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jamza |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
MySQL [(none)]>
密码插件导致的连接错误
在Mysql的8.0中默认的密码验证插件变化了,之前是mysql_native_password,现在是caching_sha2_password。caching_sha2_password提供了更好的性能和更高的密码安全性。
如果mysql版本太低会,则无法连接到Mysql8.0。连接时出现报错:
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
而如果你的客户端版本低于5.7.23,而连接用户又使用了默认的密码验证插件,那么就无法通过该用户连接,只能修改该用户的密码验证插件。
比如,修改root用户的验证插件,如下所示,将root用户的mysql_native_password密码修改为root,其他主机的客户端使用root用户连接服务端时,使用的密码即是这里设置的“root”密码:
mysql>
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.07 sec)
mysql>
mysql>
mysql>
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)
查看数据库中的密码插件更改情况:
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select user,host,plugin from user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| root | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
mysql>