docker安装mysql并用navicat连接 1.安装2.启动3.使用4.补充(这一节是n个月后加上去的)1.新的mysql容器使用dbeaver连接时会报一个错2.自定义mysql容器的启动端口等配置
1.安装
启动centos7,输入下面的命令查看IP
ip add看看下面这个IP地址,后面要用到。
启动docker输入搜索命令:
会出现下面这个镜像的list:
直接下载官方的,就是第一个(尾部没有带tag,默认下载的就是最新版本)。
执行下载命令:
下面这样就下载好了:
执行查看镜像命令:
看看镜像,发现确实有了,400多兆,有阿里云加速还是相当快。
开始运行,设置名称为mysql,-p设置端口映射,外部端口号为3306(前面一个为外部宿主的端口号,也就是我们可以访问的端口,后面一个为容器内部的端口号),登录密码设置为123456,-d表示后台运行:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql启动成功返回一长串字符串:
看看正在运行中的容器,执行:
可以看到mysql已经运行了大约一分钟了:
那么怎么用呢?
执行下面命令行,进入容器内部:
之后登录mysql,-p后面是密码,上面启动的时候设置好的:
mysql -uroot -p123456登录成功:
使用其中名为mysql的数据库:
来到这里:
尝试查询一波:
下面这样就表示mysql能用了:
mysql语句后面一定要加 ; 号。
再来试一下,在名为mysql的数据库中建了一张名为person的表,然后向里面插入了一条数据,最后查询出来:
接下来连接Navicat,输入刚才看到的IP地址,还有端口号和密码(都是上面启动的时候设置好的)。
测试一下,连接成功:
点确定进去,下面这样就弄好了:
连接的时候可能会出现下面这个错误:
mysql中执行下面的命令,重置一下密码即可:
Public Key Retrieval is not allowed。而使用IDEA自带的数据库连接工具则没有这个问题。不得不说做IDEA这家公司的产品是真的强大。
网上的解决方法基本都是给url添加上allowPublicKeyRetrieval=true。我也这样做了,确实可以解决。
关于自定义配置文件,官方提供了外部挂载的方式。
这个方法在Linux下应该没有什么问题,但是我在windows下的docker中启动的mysql容器会忽略掉自定义的配置文件,就像这样:
这个日志可以使用下面这个命令看到(尾部这串30b47fc8b0eb是容器ID):
这是由于文件的权限不符合mysql的要求,从而会忽略掉它。这个问题在Linux下可以通过下面的命令解决(尾部这个/etc/my.cnf是自己的配置文件路径):
chmod 644 /etc/my.cnf但是在windows环境下根本无法使用这个命令,所以windows下的mysql配置文件挂载暂时就扑街,有大佬知道这个怎么解决吗?
好在官方还有一种不要配置文件的设置方式:
使用下面这条命令创建一个新的mysql容器:(其中ecac195d15af为镜像ID,--port=3308可以设置mysql容器的启动端口为3308)
下图可以看到mysql容器启动到了3308端口。
最后给出mysql的官方镜像文档:https://hub.docker.com/_/mysql。 或者自己去docker hub搜就行了。