使用Docker操作MySQL
在Docker中操作MySQL可以简化数据库的部署和管理过程。以下是详细的步骤,包括如何拉取MySQL镜像、创建容器以及配置远程访问权限。
拉取MySQL镜像
首先,使用以下命令从Docker Hub拉取MySQL镜像:
docker pull mysql
你也可以指定版本,例如拉取MySQL 5.7版本:
docker pull mysql:5.7
拉取完成后,可以使用以下命令查看本地镜像:
docker images
创建MySQL容器
使用以下命令创建并运行MySQL容器:
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my_mysql mysql
-d:后台运行容器
-p:端口映射,将容器的3306端口映射到主机的3307端口
-e:设置环境变量,这里设置MySQL的root用户密码为123456
–name:容器名称
mysql:使用的镜像名称
创建完成后,可以使用以下命令查看运行中的容器:
docker ps
进入容器并测试
使用以下命令进入容器内部:
docker exec -it my_mysql bash
进入容器后,可以使用以下命令登录MySQL:
mysql -uroot -p123456
配置远程访问权限
为了允许远程访问MySQL,需要进行以下配置:
进入MySQL容器:
docker exec -it my_mysql bash
登录MySQL:
mysql -uroot -p123456
修改root用户的权限,允许远程访问:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限:
FLUSH PRIVILEGES;
解决 MySQL 插件 ‘mysql_native_password’ 未加载错误
当你在 MySQL 中遇到 ERROR 1524 (HY000): Plugin ‘mysql_native_password’ is not loaded 错误时,表示 mysql_native_password 插件未加载或不可用。这通常发生在从 MySQL 5.7 升级到 MySQL 8.0 时,因为 MySQL 8.0 默认使用更安全的认证插件 caching_sha2_password
示例
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword';
错误信息:
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
解决方法
- 使用默认的认证插件
如果没有特别需要使用 mysql_native_password,建议使用 MySQL 8.0 默认的 caching_sha2_password。
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'YourPassword';
- 修改配置文件
如果确实需要使用 mysql_native_password,可以在 MySQL 的配置文件中添加以下设置,然后重启 MySQL 服务。 Linux: /etc/my.cnf 或 /etc/mysql/my.cnf Windows: my.ini
default_authentication_plugin=mysql_native_password
重启 MySQL 服务后,重新设置用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword';
- 手动加载插件
如果插件未加载,可以尝试手动加载。
INSTALL PLUGIN mysql_native_password SONAME 'auth_socket.so';
请注意,替换 ‘auth_socket.so’ 为实际的插件文件名,这可能因操作系统和 MySQL 版本而异。