基础命令
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 媳妇给我做了好吃的,工作回来脑子也都是这件事想记录下来,感谢桃野野女士,永远爱你