docker安装运行MySQL(CentOS7),解决数据库密码正确却报密码错误

第一步:下拉mysql

redis pull mysql
我下拉的是目前最新版本,也就是8.3.0版本
docker ps
查看容器运行情况

第二步:挂载目录

mkdir -p /path/mysql/log /path/mysql/data /path/mysql/conf

第三步:新建并修改配置文件

/path/mysql/conf/下新建 my.cnf文件,即/path/mysql/conf/my.cnf
我的配置文件如下,大家可以直接复制进my.cnf

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

这个配置文件是解决编码问题,默认mysql的编码为latin1,要将他改为utf-8编码

第四步:配置防火墙对外开放端口

开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
systemctl restart firewalld
重启docker
systemctl restart docker

第五步:启动mysql

docker run -d -p 3306:3306 --privileged=true -v /path/mysql/log:/var/log/mysql -v /path/mysql/data:/var/lib/mysql -v /path/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=password --name mysql mysql
注意,重点:如果是服务器数据库,密码一定要更换成复杂密码,不然可能会被黑掉数据
本人由于疏忽,第一次设置服务器数据库密码为123456,结果第二天就被黑客黑掉了,对方仅在我的数据库留了一条"转账则恢复数据,否则公布且删除数据"的信息。庆幸的是,由于那个数据库是新库,里面没什么数据,只有若依框架的配置文件,所以黑了也就被黑了,也没有去找回。

常见错误

明明自己密码正确,但是mysql却报密码错误
如果更换了mysql密码,就一定要删除容器卷里的数据,否则旧数据会影响到新容器对新密码的校验(新密码无法通过,旧密码能通过),可能是因为容器卷里的旧数据存了旧密码

重大错误

数据库被黑

注意,重点:如果是服务器数据库,密码一定要更换成复杂密码,不然可能会被黑掉数据
本人由于疏忽,第一次设置服务器数据库密码为123456,结果第二天就被黑客黑掉了,对方仅在我的数据库留了一条"向xxx账户转账0.017比特币则恢复数据,否则公布且删除数据"的信息。庆幸的是,由于那个数据库是新库,里面没什么数据,只有若依框架的配置文件,所以黑了也就被黑了,也没有去找回。
由于这个问题太重要且严重,所以再次重申一遍

CentOS7部署ruoyi-Cloud版系列

我正在做一个在虚拟机的Linux系统部署项目的系列,本系列不讲与若依框架有关的知识,只讲虚拟机环境的配置
前置知识:

  • 从git下拉若依框架Cloud版,并修改好配置文件
  • 下载Vmware并安装虚拟机系统CentOS7,并安装好docker
  • 下载Xshell和Xftp,Xshell用来连接虚拟机,运行虚拟机命令,Xftp用来虚拟机和主机传输文件,比原生的虚拟机好用
  • 本人容器卷同一放在根目录下的path文件夹里,即/path/

目前进度:

  1. Docker安装运行MySQL
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要让CentOS 7上的Docker安装MySQL可以远程连接,需要进行以下步骤: 1. 首先,确保CentOS 7上已经安装DockerDocker Compose。可以通过运行以下命令来检查它们的版本: ``` docker version docker-compose version ``` 2. 下载MySQLDocker镜像并生成一个新的容器。可以运行以下命令来完成此步骤: ``` docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 mysql:latest ``` 3. 在此步骤中,注意将`your_password`替换为您自己设置的密码。此命令会创建一个名为`mysql`的容器,并将MySQL的默认端口3306映射到主机的3306端口。 4. 检查Docker容器是否正在运行,并且3306端口是否已被监听。可以使用以下命令来检查它们: ``` docker ps netstat -tuln | grep 3306 ``` 5. 确保CentOS 7防火墙已正确配置以允许从远程访问MySQL的3306端口。可以使用以下命令来打开3306端口: ``` firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` 6. 现在,可以从远程机器使用MySQL客户端连接到CentOS 7上的Docker运行MySQL实例。使用以下命令连接到MySQL服务器: ``` mysql -u root -p -h your_server_ip ``` 请注意将`your_server_ip`替换为CentOS 7主机的IP地址,将提示输入密码即可。 通过执行以上步骤,您应该能够远程连接到CentOS 7上运行Docker MySQL实例。 ### 回答2: 当在CentOS 7上使用Docker安装MySQL时,可能会遇到无法远程连接的问题。以下是一些可能的解决方法: 1. 检查Docker容器网络设置:确认Docker容器是否使用正确的网络模式。可以使用`docker ps`命令查看容器的详细信息,确认容器是否使用了`--network`参数或正确的`network_mode`设置。 2. 检查MySQL配置文件:在Docker容器内部,打开MySQL配置文件`/etc/mysql/my.cnf`,确保`bind-address`设置为`0.0.0.0`,允许所有IP访问数据库。 3. 检查容器端口映射:通过`docker ps`命令查看MySQL容器的端口映射情况,确保将MySQL容器的端口映射到正确的主机端口上。例如,如果容器内部的MySQL端口是3306,则可以通过`docker run`命令的`-p`参数将其映射到主机上的端口。 4. 防火墙配置:如果在主机上启用了防火墙,可能需要打开MySQL所用的端口。可以使用以下命令将3306端口添加到防火墙规则中: ``` sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` 5. 检查MySQL用户权限:确保在MySQL容器中,用户拥有远程连接MySQL的权限。可以通过以下命令登录MySQL容器: ``` docker exec -it <mysql_container_id> bash mysql -u root -p ``` 然后在MySQL命令行中,执行以下命令检查用户权限: ``` SHOW GRANTS FOR '<username>'@'%' ; ``` 如果没有远程连接权限,可以通过以下命令为该用户添加权限: ``` GRANT ALL PRIVILEGES ON *.* TO '<username>'@'%' IDENTIFIED BY '<password>' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 6. 检查主机网络连接:确保从远程主机可以ping通CentOS 7主机的IP地址。如果ping不通,可能是网络配置的问题,需要检查网络设置和路由。 希望以上解决方法能够帮助你解决无法远程连接的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值