Docker安装mysql:Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use

问题描述:

使用linux+docker搭建mysql服务。
执行语句:

docker run -p 3306:3306 --name mysql \ 
-v /mydata/mysql/log:/var/log/mysql \ 
-v /mydata/mysql/data:/var/lib/mysql \ 
-v /mydata/mysql/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

报错如下:

Error response from daemon: driver failed programming external connectivity 
on endpoint mysql (2c24e750d5dcdd67fda102cb4c0e32bf0dfe3c74b846aecc6cad299d0dc91b64): 
Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

意思就是端口被占用。


解决方案:

当前端口3306被其他进程占用,两种解决方案:换端口或者kill占用该端口的进程

  • 第一种:杀死3306端口进程
netstat -tanlp # 查看所有已被占用端口和所在进程ID

在这里插入图片描述

kill 101427 # 杀死当前进程
netstat -tanlp # 占用3306端口的进程已被删除

重新执行运行mysql的命令即可。

docker run -p 3306:3306 --name mysql \ 
-v /mydata/mysql/log:/var/log/mysql \ 
-v /mydata/mysql/data:/var/lib/mysql \ 
-v /mydata/mysql/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  • 第二种:换端口号重新启动mysql

打开挂载到宿主机的配置文件

vi /mydata/mysql/conf/my.cnf

修改端口号
添加 port=3300

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
port=3300
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

重启mysql

# 需要先将之前没有启动成功的mysql删除掉
docker rm mysql
# 重新启动
docker run -p 3300:3300 --name mysql \ 
-v /mydata/mysql/log:/var/log/mysql \ 
-v /mydata/mysql/data:/var/lib/mysql \ 
-v /mydata/mysql/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

最后别忘记更改mysql的连接权限将localhost改成%

# 进入mysql
docker exec -it mysql mysql -u [用户名] -p [密码]
# 选择mysql数据库
use mysql;
# 更改root(或其他不一定都是root)用户,host字段值改为 % 
grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
# 刷新
flush privileges;
# 查看是否更改成功
select host, user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+
3 rows in set (0.00 sec)

消灭问题

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值