背景
自己手上有一个项目服务用的是AWS EC2,最近从安全性和性能方面考虑,最近打算把腾讯云的MySQL数据库迁移到AWS RDS上,因为AWS的出口规则和安全组等问题,我需要修改默认的3306端口和Bind Address限制特定的IP访问,我在Stackoverflow上查询了如何修改,但是网上的资料大多比较老旧,不符合目前主流的MySQL版本(使用的MySQL 5.7.27,操作系统使用Ubuntu 18.04.1 LTS)
在 Stackoverflow上的高票回答很简单,修改只需要三步就可以完成
/etc/my.cnf // 找到配置文件 port = 3306 // 修改内容 sudo service mysql restart // 重启MySQL
但实时并没有那么简单,以上答案可能对旧版本管用,但是新版本你在/etc/my.cnf下根本找不到任何东西,文件都不存在
然后我去查阅的官方文档,找到的配置文件原来在目录:/etc/mysql/my.cnf 下,但是不要觉得找到配置文件就万事大吉,当你打开文件你会看到画风变了,因为配置文件里面没有内容,而是引用了另外2个配置文件夹,/etc/mysql/my.cnf 具体内容是这样的
!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
可以,至少有线索了,顺着路径去找,在2个目录下每个文件都看了下,最后看到 mysql.conf.d/mysqld.cnf 似乎是我们要找的文件(官方文档也验证了这一点),打开可以看到我们需要修改的文件属性
[mysqld] prot = 3306 bind-address = 127.0.0.1 // 只允许本机访问
改成我需要的的配置参数后,我以为事情到这里就结束了,当我使用 sudo service mysql restart 重启服务的时候,我发现我的内网机器还是访问不了,我使用 netstat -ntlp 查看 Local Address,Foregin Address,发现我修改的配置后的配置没有生效,我陷入的深深的自我怀疑当中,仿佛线索在这里中断了
然后,有网友说提到说有可能是文件权限问题,如果文件权限过大(全局可写),MySQL 会出现安全考虑不会读取该配置文件,而且读取自身的配置副本文件,我执行命令,如看如下警告
mysql --help | grep my.cnf mysql: [Warning] World-writable config file '/etc/mysql/mysql.conf.d/mysqld.cnf' is ignored. order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
上面是指文件由于全局可写存在风险,被MySQL忽略,并且列出MySQL读取配置文件的顺序,这里是可以看到MySQL是存在多个my.cnf配置文件,有些是全局配置,有些是局部配置,找到线索后,处理起来就简单很多了,我们更改文件权限,再看看 mysql --help 就发现警告已经没有了,具体命令如下:
sudo chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf mysql --help | grep my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
然后再执行 sudo service mysql restart,然后再看看 Local Address 和 Foreign Address 已经变成我们在my.cnf配置的内容,但是修改后的配置已经成功生效,确认是文件全局可读的安全问题导致
总结
最后是关于 MySQL 的安全规则导致修改配置不生效,当然这条规则,大部分情况下我们是不知道的(如果没有完整阅读官网文档的话),在经过这次问题,我大概有如下几点总结,帮助大家在排查问题上少走弯路,尽快找到真实的问题:
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
刚开始学习shiro, 实现的效果非常简单,首页点击添加(/user/add),应该能直接访问. 而点击更新(/user/update),应该提示登录.但是实际都可以直接点开,不知道哪里出问题了,shiro的配置没生效,请高手赐教,谢谢 环境:java 17 springboot 3.1.1 shiro 1.11.0 pom.xml controller/MyController.java res
本文向大家介绍解决tp5在nginx下修改配置访问的问题,包括了解决tp5在nginx下修改配置访问的问题的使用技巧和注意事项,需要的朋友参考一下 第一:修改nginx配置 注意:所有配置都是基于lnmp1.4的一键安装环境的 根据自己的nginx配置,找到正确的fastcgi.conf,修改fastcgi_param参数 将默认的路径修改至自己的项目根目录的上一级,注意是上级!!! 3、lnmp
本文向大家介绍解决idea spring boot 修改html等不重启即时生效的问题,包括了解决idea spring boot 修改html等不重启即时生效的问题的使用技巧和注意事项,需要的朋友参考一下 一、spring-boot-devtools 在pom中直接引入依赖 设置以下两项(第一项如已设置直接设置第二项) 1) “File” -> “Settings” -> “Build,Exec
本文向大家介绍php.ini save_handler 修改不生效的解决办法,包括了php.ini save_handler 修改不生效的解决办法的使用技巧和注意事项,需要的朋友参考一下 php5.3.3以前php-fpm还没有被php收录,配置php基本都在php.ini里面,php5.3.3及以后,除了在php.ini配置以外,还可以在php-fpm.conf里面配置。 多个地方都可以配置的话
本文向大家介绍解决vant-UI库修改样式无效的问题,包括了解决vant-UI库修改样式无效的问题的使用技巧和注意事项,需要的朋友参考一下 最近用vue写页面时,发现使用vant的有些UI组件,而又不能满足自己的样式,修改CSS样式还是无效。css一般都会使用sass或者less,加了scoped后修改的样式不起作用,即使加了important也没用 vue项目中,当<style>标签有scope
本文向大家介绍解决修改mysql的data_dir所引发的错误问题,包括了解决修改mysql的data_dir所引发的错误问题的使用技巧和注意事项,需要的朋友参考一下 今天,搭建新购的阿里云ECS环境(ubuntu 16.04 LTS),需要将mysql的数据保存在新挂载的磁盘上(已挂载到/mnt下),先停掉mysql服务,然后查看mysql并数据保存的位置: 发现datadir=/var/lib