Docker安装Mysql和Postgresql数据库

Mysql
Mysql保姆级操作流程

官方image地址:https://hub.docker.com/_/mysql

1.查看image信息
docker search xxx 
docker search mysql 
//不加版本号默认latest  后面可以加具体的版本号
2.拉取image
docker pull mysql
docker pull mysql:latest
//MYSQL_ROOT_PASSWORD设置root为密码
3.docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --restart=always mysql
/*如果按照的是MySQL8之前的版本 1--3步就已经完成 如果按照的是8之后则需要继续操作
这是因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password*/
4.docker ps 查看安装的MySQL的CONTAINER ID,记住它
在运行的容器中执行命令如下命令,5d36b17325a4 为刚才的CONTAINER ID
docker exec -it 5d36b17325a4 bash
5.进入MySQL容器后执行下面命令连接MySQL
mysql -u root -p //然后根据提示输入密码即可
6.执行命令,将用户的加密方式改为mysql_native_password,密码为root(你自己的密码)
//进入MySQL后记得命令后面都加上 ;
alter user 'root'@'%' identified with mysql_native_password by 'root';
7.执行命令使权限配置项立即生效
flush privileges;
8.使用一下命令退出容器,就OK了,退出不了多试几次
exit

-e的作用是指定容器内的环境变量。
mysql的镜像中是有一个初始化脚本的,这个脚本会读取这个变量初始化root的密码。
dockerfile中使用ENV指令指定环境变量 ######环境变量

第三步结束MySQL 8.0的连接错误提示

docker图片1

总结

在mysql8之后,加密规则是caching_sha2_password需要修改为mysql_native_password

参考博客地址:https://blog.csdn.net/weixin_44260806/article/details/123642517

Postgresql
Postgresql保姆级操作流程

官方image地址:https://hub.docker.com/_/postgres

1.拉取image//版本号以及查看版本号命令同上
docker pull postgres
2.创建本地卷(数据卷可以在容器之间共享和重用,默认会一直存在,即使容器被删除(docker volume inspect postgresqldata可查看数据卷的本地位置)

docker volume create postgresqldata
3.运行一个PostgreSQL数据库实例
docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=root -v postgresqldata:/var/lib/postgresql/data --restart=always -d postgres
4.在实例内用 psql进行访问:
5.第一条命令进入名为 `pgsql`的容器运行时;
docker exec -it postgres bash
6.第二条命令登录postgresql命令行控制台
psql -U postgres -W
创建数据库
create user fang with password 'root';
创建数据库
create database test_db owner fang;

如果基于docker安装之后无法远程连接数据库 则是对应的连接工具对应的驱动可能不支持,更新到最新的即可

docker图片2

如果安装的是13版本

也可以参考如下:https://wenku.baidu.com/view/332ca53cab114431b90d6c85ec3a87c240288a17.html

由于我安装的是最新版本>14 ,docker下面的 /var/lib/pgsql/data/

此路径下没有任何文件

我后面用的DBeaver下载最新的驱动 直接可以连接不需要修改对应的配置

docker图片3

官网问题地址:https://issues.apache.org/jira/browse/GUACAMOLE-1433并且标识已解决