大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn
起因:云服务器MySQL密码设置的太简单了,导致到被入侵删库后被勒索比特币了,幸好只是一个练习项目,所以没什么影响。
以下数据库已被删除:keyauth。 我们有完整的备份。 要恢复它,您必须向我们的比特币地址bc1qeezukfupskw05my46rfucy3ffddd02dzq0wask支付0.015比特币(BTC)。 如果您需要证明,请通过以下电子邮件与我们联系。 duan00192@proton.me 。 任何与付款无关的邮件都将被忽略!
另外发现数据库的’root’@’%’这条记录被删除,导致远程连接不上
这个问题一般新数据库不会出现,但发生后也有解决方法:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
但也引起了我对服务器端应用密码设置的重视
平常使用docker启动我的MySQL服务器,重建docker容器后,发现我设置的MYSQL_ROOT_PASSWORD不生效,重新启动后发现还是需要使用原密码才可以登录。 这就让我感到很奇怪了啊。MYSQL_ROOT_PASSWORD的不就是设置root账户的默认登录密码的吗?
经过反复的测试,删除容器,重启启动,删除镜像重新拉取,最后都是没有效果。 然后我想看看我的数据库文件存放的位置,发现了一个小问题。
因为数据库文件是放在宿主机的,映射到容器内部。导致每次容器启动的时候,会去判断数据库文件是否被初始化。 我发现,如果文件被初始化后,就不会去执行MYSQL_ROOT_PASSWORD设置的密码。
删除宿主机文件,重启容器后发现
mysql | 2021-04-12 17:08:31+08:00 [Note] [Entrypoint]: Initializing database files
在容器启动过程中,我发现了初始化数据库文件的执行记录,容器启动后,我发现密码确实是我设置的MYSQL_ROOT_PASSWORD的密码。
最后,附上自己的MySQL启动脚本
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3306:3306 \
--name=mysql \
--restart always \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=yourmysqlpassword \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-time_zone='+8:00'
docker exec –it c_mysql /bin/bash
2023年1月27日更
大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn