Docker安装Mysql

Posted 桥头堡洗脚城

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker安装Mysql相关的知识,希望对你有一定的参考价值。

1、搜索镜像

docker search mysql

2、拉取镜像

docker pull mysql

3、查看镜像

docker images

4、创建目录

mkdir -p /software/mysql/logs
mkdir -p /software/mysql/data
mkdir -p /software/mysql/conf
mkdir -p /sofrware/mysql/mysql-files

 

5、docker运行命令相关参数

–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
-d:源镜像名,此处为 mysql
-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
不建立目录映射
docker run -p 3306:3306 --name mysql  \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-d mysql

建立目录映射

  docker run -p 3306:3306 --name mysql \\
  -v /software/mysql/conf:/etc/mysql \\
  -v /software/mysql/logs:/var/log/mysql \\
  -v /software/mysql/data:/var/lib/mysql \\
  -v /software/mysql/mysql-files:/var/lib/mysql-files \\
  -e MYSQL_ROOT_PASSWORD=123456 \\
  -d mysql

-e MYSQL_ROOT_PASSWORD        :设置mysql密码
-v /home/mysql/:/var/lib/mysql:挂载磁盘实现数据持久化
--lower_case_table_names=1    :忽略大小写,docker mysql默认区分大小写的
注:参数顺序一定要对,--lower_case_table_names=1要加在镜像名后面,镜像名前面是参数,后面是mysql配置,不然会报错

 lower_case_table_names=1 只能在初始化时配置,不然会报

6、使用目录映射

 

7、查看运行

docker ps

8、进入容器控制台

docker exec -it mysql bash

docker exec :在运行的容器中执行命令
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

9、进入数据库,没有密码

mysql -h 127.0.0.1 -u root -p

 

 10、查询mysql版本

select version();

 11、修改用户名

ALTER user \'root\'@\'localhost\' IDENTIFIED BY \'Test1234567!\'

12、查看用户名、密码

select host,user,authentication_string from mysql.user;

13、修改访问

update mysql.user set host=\'%\' where user=\'root\';

 14、查看docker 信息

docker inspect mysql

 15、创建远程访问用户

创建用户
create user test@\'%\' identified  by \'Test1234567!\';
授权
grant all privileges on *.* to test@\'%\' with grant option;
刷新
flush privileges;

报错

 

 

因为mysql8使用的是caching_sha2_password加密规则,最简单的方法是修改远程连接用户的加密规则:
ALTER USER \'test\'@\'%\' IDENTIFIED WITH mysql_native_password BY \'Test1234567!\';

  ALTER USER \'test\'@\'%\' IDENTIFIED BY \'Test1234567!\' PASSWORD EXPIRE NEVER;
  ALTER USER \'test\'@\'%\' IDENTIFIED WITH mysql_native_password BY \'Test1234567!\';

  FLUSH PRIVILEGES;

 

 

 

16、成功连接

 

 

 

 

 

错误:

mysqld: Error on realpath() on \'/var/lib/mysql-files\' (Error 2 - No such file or director

解决方法:

      当指定了外部配置文件与外部存储路径时,也需要指定 /var/lib/mysql-files的外部目录,

  所以在主机新建/software/mysql/mysql-files目录,

  在启动容器时 需要加上

  -v /software/mysql/mysql-files:/var/lib/mysql-files \\

 

注:

mysql在linux中区分大小写

show variables like \'%lower_case_table_names%\';

 

 值为1,表示是大小写不敏感,而linux环境的mysql是0. 

修改方法: 
1. 找到mysql的安装位置 
2. 找到主目录下的my.ini配置文件 
3. 在[mysqld]节点下添加lower-case-table-names=0 
4. 重启mysql服务

 docker中修改my.cnf配置文件

1、进入容器

docker exec -it 容器ID /bin/bash

2、进入目录

cd /etc/mysql
如果不安装vim在使用vim的时候会报找不到,在修改docker中mysql的配置文件,无法使用vi命令。
apt-get update
或 apt
-get install vim

3、修改

vi my.cnf

4、退出容器

如果要退出bash有2种操作:1)Ctrl + d 退出并停止容器;2)Ctrl + p + q 退出并在后台运行容器;

5、重启容器

docker restart 容器ID

 

 

注注注:

 # 在此目录找到nginx容器的配置文件

find ./ -name nginx.conf

 

 

 

 








以上是关于Docker安装Mysql的主要内容,如果未能解决你的问题,请参考以下文章

docker安装mysql

docker 下安装 mysql 及登录

Linux系统下祼机安装mysql8.0和docker mysql 8.0 性能差异对比~

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

12-Docker-部署SonarQube

使用docker安装mysql5.7