解决在腾讯云以docker方式安装MySQL,宿主机可以连接;但是远程访问不能连接的问题

3 篇文章 0 订阅
2 篇文章 0 订阅

docker

docker ps | docker ps -a

nginx

docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf  -v /home/docker-nginx/www:/usr/share/nginx/html -d nginx

MySQL

  1. docker pull mysql:5.7 # 拉取 mysql 5.7
  2. docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=superadmin@#^% -d mysql:5.7 #启动
  3. docker exec -it mysql bash #进入
  4. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘superadmin@#^%’ WITH GRANT OPTION;
  5. FLUSH PRIVILEGES;
  6. quit;
  7. docker exec -it dc29a874e483 bash -c "mysql -uroot -p "; # 从宿主机进入docker的mysql 没有安装客户端时
  8. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  9. firewall-cmd --reload

这时就可以看到MySQL可以远程连接了;但是若是用的腾讯云服务器;还需要设置入栈规则;放开3306

0.0.0.0/0 TCP:3306

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=superadmin@#^% -d mysql:5.7


–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
-d:后台运行容器,保证在退出终端后容器继续运行
  • 如果要建立目录映射
   duso docker run -p 3306:3306 --name mysql \
   -v /usr/local/docker/mysql/conf:/etc/mysql \
   -v /usr/local/docker/mysql/logs:/var/log/mysql \
   -v /usr/local/docker/mysql/data:/var/lib/mysql \
   -e MYSQL_ROOT_PASSWORD=123456 \
   -d mysql:5.7
  • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
sudo docker exec -it mysql bash

mysql -uroot -psuperadmin@#^%
update user set host = '%' where user = 'root';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'superadmin@#^%' WITH GRANT OPTION;


FLUSH PRIVILEGES;

quit
grant all privileges on *.* to root@'%' identified by 'superadmin@#^%';

docker exec -it dc29a874e483 bash -c "mysql -uroot -p";  superadmin@#^%

打开端口

# 开放端口:
$ systemctl status firewalld
$ firewall-cmd  --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd  --reload
# 关闭防火墙:
$ sudo systemctl stop firewalld
firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 开放5672端口

firewall-cmd --zone=public --remove-port=5672/tcp --permanent  #关闭5672端口

firewall-cmd --reload   # 配置立即生效

2、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

3.、关闭防火墙

如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

systemctl stop firewalld.service

 

4、查看防火墙状态

 firewall-cmd --state

 

5、查看监听的端口

netstat -lnpt


PS:centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

 

6、检查端口被哪个进程占用

netstat -lnpt |grep 5672


7、查看进程的详细信息

ps 6832



8、中止进程

kill -9 6832
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值