剑轩

docker安装mysql,忽略表名大小写

电脑版发表于:2020/9/17 17:28


一:下载mysql镜像

docker pull mysql:5.7
docker pull mysql:8.0.30
不接版本号就下载最新版本,或者docker pull mysql:latest

下载完后查看docker镜像



:运行容器


创建一个目录作为和容器的映射目录

mkdir -p /data/mysql/data

下面是运行指定版本
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456  -v /data/mysql/data:/var/lib/mysql  mysql:8.0.30 --lower_case_table_names=1




参数说明:
—name启动容器设置容器名称为mysql 

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

-v设置容器目录/var/lib/mysql映射到本地目录/data/mysql/data

MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
-itd 其中的-d后台运行容器mysql并返回容器id

lower_case_table_names=1:忽略大小写,不然linux下mysql表明是默认忽略大小写的

注意在指定,lower_case_table_names=1的时候,可能会出现错误:Different lower_case_table_names settings for server ('1') and data dictionary ('0')。很有可能是因为挂载目录以前跑过mysql服务,所以还保留以前的设置了,所以解决方法就是换一个挂载目录,或者把以前的内容清空一下。还有要注意这个忽略大小写的问题,只有在初始化的时候设置才有效,启动后修改配置文件后在重启是有问题的哦

使用docker ps查看是否安装成功:


也可以直接下面这样简单的运行
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
这样没有指定镜像的版本,只指定了镜像名称叫mysql。而且也没有挂载目录。


:本地连接


1:先进入容器
   docker exec -it mysql bash
   (注意有时候因为格式因为直接命令直接复制进去可能不行,自己敲一遍就好了)

   进入后可以查看一下mysql的版本号:
      

2:使用命令连接mysql
    mysql -u root -p  
   

3:连接上了就可以进行一点操作了
  

    准备下班了,剩下的后面在写


四:远程连接。修改密码


默认支持了远程连接,如果不行的,可以去阿里云的安全组看看对应的端口是否开放了。如果还不行的可以尝试一下执行以下的步骤

进入容器:

docker exec -it 容器id bash
(注意有时候因为格式因为直接命令直接复制进去可能不行,自己敲一遍就好了)


进入mysql:

mysql -uroot -p

授权:

mysql> GRANT ALL ON *.* TO 'root'@'%';


完整一点的写法:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;(这句话好像有一点点问题,执行上面那句即可)

其实就是设置让用户支持远程连接(查询mysql下用户表效果)


刷新权限:

mysql> flush privileges;

更新加密规则:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新root用户密码:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限:

mysql> flush privileges;


使用完后可以使用exit退出命令行



关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢