Docker数据库容器(四)

前言

  前面都以Nginx容器为例,介绍很Docker容器的运用。但是对于数据库的容器,在创建的时候却涉及到了Docker的环境变量设置,这个对于很多项目都是非常重要的。所以这里单独深入了解这类型的容器创建。

一、创建

  这里以Mysql容器为例,用之前Nginx的创建方式来创建容器。

~]# docker run -d --name mysql -p 3306:3306 mysql:8

  这里使用命令行进行查看容器,会发现Mysql容器未启动。

~]# docker ps -a

   接着继续详细查看Mysql日志。

~]# docker logs mysql 

  提示就是无法初始化,需要选择指定的环境变量才能开启。MYSQL_ROOT_PASSWORD密码,ALLOW_EMPTY允许密码为空,RANDOM随机密码。

  我们生产环境肯定会设置密码,所以一般会使用指定密码。先删除容器,然后创建。

~]# docker rm -f mysql
~]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8 #-e就是代表环境变量的设置

   成功创建好之后,就能根据账号密码访问数据库。

~]# mysql -h 127.0.0.1 -P 3306 -u root -p # 访问数据库

  

二、外部连接数据库

  使用工具外部连接的时候会报错,这个问题目前找到两种方式处理。

Public Key Retrieval is not allowed #不允许进行公钥检索

  一、宿主机子上访问一下数据库,然后在用工具就可以了。

  二、可以尝试将MySQL用户的身份验证插件更改为mysql_native_password。访问数据库,直接输入以下两行命令。

~]# ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # %表示该用户可以从任何主机连接到MySQL服务器。
~]# FLUSH PRIVILEGES; #在更改了用户的权限或密码后,通常需要执行此命令以确保更改立即生效。

  第一种方法,一旦数据库重启,则外部工具无法连接。第二种设置之后,数据库重启,外部工具也能正常连接。

 

posted @ 2024-03-05 23:27  Auler  阅读(6)  评论(0编辑  收藏  举报