使用docker启动mysql服务时,突然报如下的错误:
02b082f9a42c28f1eae2f548780cba4d561b54f455e475e9cebdabc68a38c1f4
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (199ba8cc23e556d6716b5b62975f07be34e5d1dea3197c7eaca730754c6a5a5d): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.
大致意思为端口被占用着。
出现问题时在网上搜索了很多相关问题,试了好几种方法都解决不了问题,大多数回答都是说重启docker即可,但是反复重启,折腾来折腾去仍不见问题解决。
最终还是通过查看占用端口、杀死进程方案得以解决问题。
1.查看当前占用端口命令
netstat -tanlp
2.杀死进程(注意不是杀死端口,而是pid的端口),如下图参考:
又报错
docker: Error response from daemon: Conflict. The container name “/mysql” is already in use by container “02b082f9a42c28f1eae2f548780cba4d561b54f455e475e9cebdabc68a38c1f4”. You have to remove (or rename) that container to be able to reuse that name.
See ‘docker run --help’.
原因:之前运行docker容器还没有退出,导致出现容器重名情况
docker ps -a
解决办法:删除重名的容器
docker rm (该containerID)
如果想要再次使用,使用docker restart 镜像名
则可以重启该container容器。
解决linux mysql命令 bash: mysql: command not found 的方法
错误:
原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:
ln -s /usr/local/mysql/bin/mysql /usr/bin
以下是补充:
linux下,在mysql正常运行的情况下,输入mysql提示:
mysql command not found
遇上-bash: mysql: command not found
的情况别着急,这个是因为/usr/local/bin
目录下缺失mysql导致,只需要一下方法建立软链接,即可以解决:
把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下:
cd /usr/local/bin
ln -fs /MYSQLPATH/bin/mysql mysql
还有其它常用命令mysqladmin、mysqldump等不可用时候都可按用此方法解决。
注:其中MYSQLPATH是mysql的实际安装路径