No Data

docker安装mysql

原创  作者:斩雪碎光阴  发布于:2023年02月17日  阅读量:401
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  分类:  标签:

一、查看可用版本

docker search mysql

或访问 MySQL 镜像库地址

https://hub.docker.com/_/mysql?tab=tags

latest为最新版本


二、拉取 MySQL 镜像

docker pull mysql:latest

docker pull mysql:8.0.33


三、运行容器

运行容器前先创建挂载配置文件和数据库文件用的文件夹mysql01、mysql01/conf(存放数据库配置文件)、mysql01/data(存放数据库文件)

运行容器:

docker run -itd --name mysql01 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /home/xxx/mysql01/conf:/etc/mysql/conf.d -v /home/xxx/mysql01/data:/var/lib/mysql mysql:8.0.33

参数说明:

-p 3307:3306 :映射容器服务的 3306 端口到宿主机的 3307 端口,外部主机可以直接通过 宿主机ip:3307 访问到 MySQL 的服务。

MYSQL_ROOT_PASSWORD=root:设置 MySQL 服务 root 用户的密码。

mysql也可写成mysql:8.0.33:使用的镜像和版本号

-v /home/xxx/mysql01/conf:/etc/mysql/conf.d:映射数据库配置文件

-v /home/xxxxx/mysql01/data:/var/lib/mysql mysql:映射数据库文件,为了保证容器被删除数据不会消失

查看是否安装成功

docker ps -a


四、连数据库报错:

Error No. 1251

client does not support authentication protocol requested by server;

consider upgrading MySQL client

原因:

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,

解决方法:

把mysql用户登录密码加密规则还原成mysql_native_password

查看容器id:

docker ps -a

进入容器:

docker exec -it a9f4283fec00 /bin/bash

通过 root 和密码 root 访问 MySQL 服务

mysql -h localhost -u root -p

查看用户信息

select host,user,plugin,authentication_string from mysql.user;

host为 % 表示不限制ip,localhost表示本机使用,plugin非mysql_native_password 则需要修改密码

重置密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

8.4版本之后会报错:ERROR: 1524: Plugin ‘mysql_nativate_password‘ is not loaded


五、进入容器后中文乱码

使用env LANG=C.UTF-8避免容器中显示中文乱码

docker exec -it a9f4283fec00 env LANG=C.UTF-8 /bin/bash


六、其他命令

通过 root 和密码 root 访问 MySQL 服务

mysql -h localhost -u root -p

查看ubuntu中是否安装过mysql

dpkg -l | grep mysql

查看mysql当前端口号

show global variables like 'port';

可以使用容器名代替容器id访问容器,例如:

docker exec -it mysql01(容器名) env LANG=C.UTF-8 /bin/bash

删除文件夹sudo rm -r xxx

相关文章