docker部署mysql 8.0.33以及可能出现的问题
1、拉取mysql
docker pull mysql:8.0.33
1.1查找docker库中所有mysql镜像版本
docker search mysql
2.创建需要的文件
2.1创建 my.cnf,放在conf下面
vim my.cnf
写入以下信息:
[client]
default-character-set = utf8
[mysqld]
character_set_server = utf8
collation_server = utf8_general_ci
secure-file-priv= NULL
symbolic-links=0
!includedir /etc/mysql/conf.d/
# 下面是无密码进入
#skip-grant-tables
2.2 创建 /usr/local/java/mysql/log文件夹
2.3创建 /usr/local/java/mysql/data文件夹
3.启动
docker run -d -p 3306:3306 --privileged=true --restart=always
-v /usr/local/java/mysql/log:/var/log/mysql
-v /usr/local/java/mysql/data:/var/lib/mysql
-v /usr/local/java/mysql/conf:/etc/mysql/conf.d
-v /usr/local/java/mysql-files:/var/lib/mysql-files
-e MYSQL_ROOT_PASSWORD='123456'
--name mysql mysql:1.0
-d:后台运行 -p 3306:3306 端口映射 把前面的3306是docker中mysql的端口,后面的3306是暴露在外面使用的端口号
--privileged=true :加权限,可能权限不够,把权限提高
--restart=always :参数能够使我们在重启docker时,自动启动相关容器。
-v:挂载 /usr/local/java/mysql/log:/var/log/mysql 把/usr/local/java/mysql/log下的文件挂 载到容器中的/var/log/mysql中
从上到下为:配置挂载 日志、msyql数据文件目录映射到宿主机、配置文件、忘了
-e MYSQL_ROOT_PASSWORD='root' :密码
--name mysql:创建的容器名称
mysql:1.0 :镜像名称和版本
登录的时候出问题
首先: 进入容器后
mysql -root -p 出现登录错误
去my.cnf中加入
skip-grant-tables
然后无密码登录进去
然后: 加密方式修改:
做法1:修改远程的加密方式
格式:ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
实例:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456.';
做法2:修改本地加密方式
格式:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
实例:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'
最后:flush privileges;更新权限 //千万记得重新更新下