您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

docker中mysql连不上,docker中安装mysql

来源:互联网 浏览:117次 时间:2023-04-08

docker安装mysql并用navicat连接 1.安装2.启动3.使用4.补充(这一节是n个月后加上去的)1.新的mysql容器使用dbeaver连接时会报一个错2.自定义mysql容器的启动端口等配置

1.安装

启动centos7,输入下面的命令查看IP

ip add

看看下面这个IP地址,后面要用到。

启动docker输入搜索命令:

docker search mysql

会出现下面这个镜像的list:

直接下载官方的,就是第一个(尾部没有带tag,默认下载的就是最新版本)。
执行下载命令:

docker pull mysql

下面这样就下载好了:

执行查看镜像命令:

docker images

看看镜像,发现确实有了,400多兆,有阿里云加速还是相当快。

2.启动

开始运行,设置名称为mysql,-p设置端口映射,外部端口号为3306(前面一个为外部宿主的端口号,也就是我们可以访问的端口,后面一个为容器内部的端口号),登录密码设置为123456,-d表示后台运行:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

启动成功返回一长串字符串:

看看正在运行中的容器,执行:

docker ps

可以看到mysql已经运行了大约一分钟了:

3.使用

那么怎么用呢?
执行下面命令行,进入容器内部:

docker exec -it 0276f40506d7 bash

之后登录mysql,-p后面是密码,上面启动的时候设置好的:

mysql -uroot -p123456

登录成功:

使用其中名为mysql的数据库:

use mysql;

来到这里:

尝试查询一波:

select host,user from user;

下面这样就表示mysql能用了:

mysql语句后面一定要加 ; 号。

再来试一下,在名为mysql的数据库中建了一张名为person的表,然后向里面插入了一条数据,最后查询出来:

接下来连接Navicat,输入刚才看到的IP地址,还有端口号和密码(都是上面启动的时候设置好的)。

测试一下,连接成功:

点确定进去,下面这样就弄好了:

连接的时候可能会出现下面这个错误:

mysql中执行下面的命令,重置一下密码即可:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 4.补充(这一节是n个月后加上去的) 1.新的mysql容器使用dbeaver连接时会报一个错

Public Key Retrieval is not allowed。而使用IDEA自带的数据库连接工具则没有这个问题。不得不说做IDEA这家公司的产品是真的强大。
网上的解决方法基本都是给url添加上allowPublicKeyRetrieval=true。我也这样做了,确实可以解决。

2.自定义mysql容器的启动端口等配置

关于自定义配置文件,官方提供了外部挂载的方式。

这个方法在Linux下应该没有什么问题,但是我在windows下的docker中启动的mysql容器会忽略掉自定义的配置文件,就像这样:

这个日志可以使用下面这个命令看到(尾部这串30b47fc8b0eb是容器ID):

docker logs 30b47fc8b0eb

这是由于文件的权限不符合mysql的要求,从而会忽略掉它。这个问题在Linux下可以通过下面的命令解决(尾部这个/etc/my.cnf是自己的配置文件路径):

chmod 644 /etc/my.cnf

但是在windows环境下根本无法使用这个命令,所以windows下的mysql配置文件挂载暂时就扑街,有大佬知道这个怎么解决吗?
好在官方还有一种不要配置文件的设置方式:

使用下面这条命令创建一个新的mysql容器:(其中ecac195d15af为镜像ID,--port=3308可以设置mysql容器的启动端口为3308)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3308:3308 ecac195d15af --port=3308

下图可以看到mysql容器启动到了3308端口。

最后给出mysql的官方镜像文档:https://hub.docker.com/_/mysql。 或者自己去docker hub搜就行了。

70035297