Docker 安装mysql8

基础命令

docker stop、start、restart 停止、启动、重启
查看当前运行镜像 docker ps
查看所有镜像 docker ps -a
删除镜像 docker rmi (-f强制删除) [image]

docker安装MySQL

拉取mysql镜像

搜索mysql版本

docker search mysql

使用命令拉取最后一个版本

docker pull mysql

也可以在docker官网指定下载

本人使用指定的版本

docker pull mysql:8.0.27

挂在外部配置文件和所需要数据

创建文件夹(mkdir -p 递归创建)

mkdir -p /usr/local/mysql/conf
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/logs

创建Mysql配置文件

vi /usr/local/mysql/conf/my.cnf

添加配置防止中文乱码

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
symbolic-links=0
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8 
!includedir /etc/mysql/conf.d/

运行

docker run --restart=always -d 
 -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf
 -v /usr/local/mysql/logs:/logs 
 -v /usr/local/mysql/data/mysql:/var/lib/mysql  
 -p 3306:3306 
 --name mysql 
 -e MYSQL_ROOT_PASSWORD=123456 
  mysql:8.0.27
 --lower_case_table_names=1

参数说明
-v 挂在目录
-p 端口
–restart=always 开机启动
–name 为容器指定名字
–lower_case_table_names=1 忽略大小写区分(传言mysql8只能在加载时候配置 有待测试)

进入容器设置远程访问

docker exec -it mysql bash

问题来了来了(没问题可忽略)

Error response from daemon: Container 78dde1e2fc11fd2271cb6867a706415b67098552940793020d21b029ac9f6773 
is restarting, wait until the container is running

有问题不怕解决问题
查看日志

docker logs 容器id

在这里插入图片描述
发现运行mysql的这个容器失败了,没有运行起来,为什么会提示挂载权限失败呢?
原因:
Selinux禁止了一些安全权限,导致挂载信息时出现权限不足,网上查询资料之后给出了如下3种解决方案:

1.在docker run中加入 –privileged=true 给容器加上特定权限
2.关闭selinux
3.在selinux添加规则,修改挂载目录的特定权限

为了不影响Selinux禁止规则 选择第一种解决方案

删除容器重来

docker stop mysql
docker rm mysql
docker run --restart=always -d 
 -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf
 -v /usr/local/mysql/logs:/logs 
 -v /usr/local/mysql/data/mysql:/var/lib/mysql  
 -p 3306:3306 
 --name mysql 
 --privileged=true
 -e MYSQL_ROOT_PASSWORD=123456 
  mysql:8.0.27
 --lower_case_table_names=1

再次进入

docker exec -i -t mysql /bin/bash

在这里插入图片描述
完美

修改远程访问

登录mysql (注意-p后不需要空格)

mysql -uroot -p123456
新版 MySQL 授权用户时报错 near 'IDENTIFIED BY '密码' with grant option' at line 1
原因:因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了
解决:
1.添加用户
CREATE USER '用户名' IDENTIFIED BY '密码';
2.赋予权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
3.修改加密规则
ALTER USER '用户名'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
4.更新一下用户密码
ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
5.更新配置信息
FLUSH PRIVILEGES;

今天520 媳妇给我做了好吃的,工作回来脑子也都是这件事想记录下来,感谢桃野野女士,永远爱你

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值