背景

自己手上有一个项目服务用的是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 的安全规则导致修改配置不生效,当然这条规则,大部分情况下我们是不知道的(如果没有完整阅读官网文档的话),在经过这次问题,我大概有如下几点总结,帮助大家在排查问题上少走弯路,尽快找到真实的问题:

  1. 遇到问题首先应该看官网的最新文档
  2. 查看资料时间,网上很多资料时间太长,可能会误导你
  3. 认真查看警告信息,熟练掌握排查工具和命令
  4. 基础知识很重要,越是深的问题越考验程序员的内功

转载于:https://www.cnblogs.com/xiao2shiqi/p/11376969.html

记一次Linux修改MySQL配置不生效的问题相关推荐

  1. linux修改网卡配置不生效怎么解决?

    我们修改完网卡的配置文件后,使用下面命令进行重启,网卡配置不生效. /etc/init.d/networking restart 或者(下面是指定启动关闭某个网卡命令) ifdown enp0s3 ( ...

  2. linux下mysql的配置,Linux下Mysql配置()

    摘要 腾兴网为您分享:Linux下Mysql配置(),智慧医疗,小太阳,享家,相机美颜等软件知识,以及重庆地税12366,正常的小学上课时间表,移动云信,dnf幸运冒险家,八爪龙演播大师,几米入早教, ...

  3. 两步搞定:Linux修改mysql的sql_mode模式

    Linux修改mysql的sql_mode模式 步骤一 步骤二 查看效果 执行若不生效 步骤一 在Linux(CentOs)环境下,修改配置/etc/my.cnf即可. #查看my.cnf文件 cd ...

  4. brew mysql 添加修改mysql配置

    为什么80%的码农都做不了架构师?>>>    brew安装的MySQL是没有默认配置文件的,因此Mysql使用默认配置启动.我们需要手动创建my.cnf去覆盖默认配置.在/usr/ ...

  5. linux 修改mysql默认端口3306

    linux 修改mysql默认端口3306 cd /etc/mysql/my.cnf 修改两处 客户端的port=3306 和mysqld的服务器端口port=3306 [client] port=3 ...

  6. Linux修改mysql密码

    Linux修改mysql密码 前提:知道原密码的情况下修改密码 sudo mysqladmin -u root -p password 'test121212

  7. Linux修改主机名--立即生效的方法

    Linux修改主机名–立即生效的方法 在使用Linux操作系统过程中,如果我们想更改主机名时,可以用以下命令进行操作 查看主机名 [root@ecs-5332 ~]# hostname ecs-533 ...

  8. linux修改mysql的环境变量_Linux环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  9. linux修改mysql配置文件_忘记MySQL密码怎么办?一招教你搞定!

    在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错.那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急 ...

最新文章

  1. unity开发小贴士之八 Audio使用心得
  2. Linux管道的原子性,管道机制
  3. 戴尔t410支持哪些服务器系统,DELL服务器T410
  4. php数组合并 要保持两个数组的键名都不变
  5. mysql 出现错误 Duplicate entry for key PRIMARY 解决办法
  6. (常用API)正则表达式练习和相关的String类方法
  7. 【解题报告】Leecode 700. 二叉搜索树中的搜索——Leecode每日一题
  8. leetcode287. 寻找重复数(二分法)
  9. 2021华为杯建模---总结
  10. 圆通速递:2022年1月快递产品收入36.19亿元 同比增长20.09%
  11. 封装性的基本使用练习1
  12. 网站日志统计查询工具
  13. python bind_all_【Python】__all__ 暴露接口
  14. 如何下载Java的API开发文档
  15. 亲自体验了vscode网页版开发代码并提交代码到github代码库,发现出奇的流畅,手机和平板也可以很愉快的编写代码了
  16. scratch少儿编程航天主题:模拟航天飞机飞行
  17. 学习spark的网站
  18. CMOS图像传感器OV7725数据手册
  19. Constructing and Embedding Abstract Event Causality Networks from Text Snippets
  20. 我的原创漏洞CVE-2020-1066

热门文章

  1. log4cplus的内存泄露问题
  2. oracle 10g 手动创建scott(tiger) schema
  3. HDOJ1269(迷宫城堡)
  4. 多线程编程:return、pthread_exit()、exit()函数区别
  5. 计算最长公共数字串个数
  6. Android 画面设置模糊,如何在Android中模糊图像的某些部分?
  7. php $globa作用是l,php 关键字global在定义变量中的作用
  8. oracle dbms lob,如何使用DBMS_LOB从文件中加载CLOB数据
  9. php的内存划分,解析PHP中的内存管理,PHP动态分配和释放内存
  10. solr6 mysql_solr6 从mysql上导入数据