记一次Linux修改MySQL配置不生效的问题
背景
自己手上有一个项目服务用的是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.cnforder 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 的安全规则导致修改配置不生效,当然这条规则,大部分情况下我们是不知道的(如果没有完整阅读官网文档的话),在经过这次问题,我大概有如下几点总结,帮助大家在排查问题上少走弯路,尽快找到真实的问题:
- 遇到问题首先应该看官网的最新文档
- 查看资料时间,网上很多资料时间太长,可能会误导你
- 认真查看警告信息,熟练掌握排查工具和命令
- 基础知识很重要,越是深的问题越考验程序员的内功
转载于:https://www.cnblogs.com/xiao2shiqi/p/11376969.html
记一次Linux修改MySQL配置不生效的问题相关推荐
- linux修改网卡配置不生效怎么解决?
我们修改完网卡的配置文件后,使用下面命令进行重启,网卡配置不生效. /etc/init.d/networking restart 或者(下面是指定启动关闭某个网卡命令) ifdown enp0s3 ( ...
- linux下mysql的配置,Linux下Mysql配置()
摘要 腾兴网为您分享:Linux下Mysql配置(),智慧医疗,小太阳,享家,相机美颜等软件知识,以及重庆地税12366,正常的小学上课时间表,移动云信,dnf幸运冒险家,八爪龙演播大师,几米入早教, ...
- 两步搞定:Linux修改mysql的sql_mode模式
Linux修改mysql的sql_mode模式 步骤一 步骤二 查看效果 执行若不生效 步骤一 在Linux(CentOs)环境下,修改配置/etc/my.cnf即可. #查看my.cnf文件 cd ...
- brew mysql 添加修改mysql配置
为什么80%的码农都做不了架构师?>>> brew安装的MySQL是没有默认配置文件的,因此Mysql使用默认配置启动.我们需要手动创建my.cnf去覆盖默认配置.在/usr/ ...
- linux 修改mysql默认端口3306
linux 修改mysql默认端口3306 cd /etc/mysql/my.cnf 修改两处 客户端的port=3306 和mysqld的服务器端口port=3306 [client] port=3 ...
- Linux修改mysql密码
Linux修改mysql密码 前提:知道原密码的情况下修改密码 sudo mysqladmin -u root -p password 'test121212
- Linux修改主机名--立即生效的方法
Linux修改主机名–立即生效的方法 在使用Linux操作系统过程中,如果我们想更改主机名时,可以用以下命令进行操作 查看主机名 [root@ecs-5332 ~]# hostname ecs-533 ...
- linux修改mysql的环境变量_Linux环境变量配置全攻略
Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...
- linux修改mysql配置文件_忘记MySQL密码怎么办?一招教你搞定!
在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错.那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急 ...
最新文章
- unity开发小贴士之八 Audio使用心得
- Linux管道的原子性,管道机制
- 戴尔t410支持哪些服务器系统,DELL服务器T410
- php数组合并 要保持两个数组的键名都不变
- mysql 出现错误 Duplicate entry for key PRIMARY 解决办法
- (常用API)正则表达式练习和相关的String类方法
- 【解题报告】Leecode 700. 二叉搜索树中的搜索——Leecode每日一题
- leetcode287. 寻找重复数(二分法)
- 2021华为杯建模---总结
- 圆通速递:2022年1月快递产品收入36.19亿元 同比增长20.09%
- 封装性的基本使用练习1
- 网站日志统计查询工具
- python bind_all_【Python】__all__ 暴露接口
- 如何下载Java的API开发文档
- 亲自体验了vscode网页版开发代码并提交代码到github代码库,发现出奇的流畅,手机和平板也可以很愉快的编写代码了
- scratch少儿编程航天主题:模拟航天飞机飞行
- 学习spark的网站
- CMOS图像传感器OV7725数据手册
- Constructing and Embedding Abstract Event Causality Networks from Text Snippets
- 我的原创漏洞CVE-2020-1066
热门文章
- log4cplus的内存泄露问题
- oracle 10g 手动创建scott(tiger) schema
- HDOJ1269(迷宫城堡)
- 多线程编程:return、pthread_exit()、exit()函数区别
- 计算最长公共数字串个数
- Android 画面设置模糊,如何在Android中模糊图像的某些部分?
- php $globa作用是l,php 关键字global在定义变量中的作用
- oracle dbms lob,如何使用DBMS_LOB从文件中加载CLOB数据
- php的内存划分,解析PHP中的内存管理,PHP动态分配和释放内存
- solr6 mysql_solr6 从mysql上导入数据