通过Docker镜像运行MySQL

下载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>
Docker 镜像Docker 容器运行的基础,它包含了运行容器所需的文件系统结构及其配置。对于 MySQL 来说,Docker 镜像就是一个包含了 MySQL 数据库管理系统及其依赖环境的软件包。 使用 Docker 镜像运行 MySQL 容器的步骤通常包括以下几个阶段: 1. 拉取官方 MySQL 镜像:可以通过 Docker Hub 上的官方 MySQL 镜像仓库来获取。使用 `docker pull` 命令来下载最新的 MySQL 镜像或者特定版本的镜像。 示例命令:`docker pull mysql` 2. 运行 MySQL 容器:通过 `docker run` 命令来启动一个 MySQL 容器。你可以通过指定一系列参数来配置你的 MySQL 实例,例如设置环境变量、映射端口、设置数据卷等。 示例命令:`docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql` 3. 管理 MySQL 容器:一旦容器运行起来,你可以使用各种 Docker 命令来管理 MySQL 实例,比如查看容器日志、进入容器内部、停止或删除容器等。 4. 数据持久化:为了使 MySQL 数据在容器重启后依然可以保留,通常会使用数据卷(volumes)或绑定挂载(bind mounts)来持久化数据。 示例命令(使用数据卷):`docker run --name some-mysql -v my-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql` 通过以上步骤,你可以在 Docker 中快速部署和运行 MySQL 数据库服务。Docker 的隔离性和轻量级特性使得管理数据库实例变得更加容易和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值