解决Linux安装mysql 在/etc下没有my.cnf的问题

今天因为想改mysql的端口,结果发现我的/etc/目录下并没有my.cnf这个文件,我就看了下网上有没有解决的方法。

看了好多关于Linux下没有my.cnf的博客,都是说将my-medium.cnf 移动到etc 并且改名为my.cnf,但是我也没有my-medium.cnf 啊,后面才知道,从5.7.18开始官方不再二进制包中提供my-default.cnf文件。

具体可参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

那么我们要怎么修改端口号呢?其实我们只需要修改/etc/mysql/mysql.conf.d就可以了。

补充:mysql启动时,提示/etc/my.cnf 被忽略的问题处理

今天在处理测试开发人员的问题是,发现一个MySQL实例启动故障,处理过程如下:

发现mysql实例是关闭的,执行命令启动mysql实例时有警告:

# service mysql.server start
Warning: World-writable config file '/etc/my.cnf' is ignored
Starting MySQL SUCCESS! 

观察mysql的启动日志,在日志中显示:

151014 11:39:24 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
Warning: World-writable config file '/etc/my.cnf' is ignored

大概意思是权限全局可写,任何一个用户都可以写。mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件。这样mysql无法关闭。

此时查询MySQL数据库中的配置,发现一些my.cnf配置的参数,在mysql实例中并没有生效。

这个是因为 /etc/my.cnf 也被修改为 777权限了:

# ls -la /etc/my.cnf
-rwxrwxrwx 1 root root 1120 Jul 31 10:28 /etc/my.cnf

/etc/my.cnf 权限过大,会影响实例不能启动,或者不能关闭,需要修改为 644.操作如下:

# ls -la /etc/my.cnf
-rwxrwxrwx 1 root root 1120 Jul 31 10:28 /etc/my.cnf
#
#
# chmod 644 /etc/my.cnf
#
# ls -la /etc/my.cnf
-rw-r--r-- 1 root root 1120 Jul 31 10:28 /etc/my.cnf
# 

确认一下 /etc/my.cnf ,重启实例:

151014 14:05:54 mysqld_safe mysqld from pid file /data/mysql/data/yq-xg-dev122.pid ended
151014 14:06:08 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
151014 14:06:08 [Note] Plugin 'FEDERATED' is disabled.
151014 14:06:08 InnoDB: The InnoDB memory heap is disabled
151014 14:06:08 InnoDB: Mutexes and rw_locks use GCC atomic builtins
151014 14:06:08 InnoDB: Compressed tables use zlib 1.2.3
151014 14:06:08 InnoDB: Using Linux native AIO
151014 14:06:08 InnoDB: Initializing buffer pool, size = 128.0M
151014 14:06:08 InnoDB: Completed initialization of buffer pool
151014 14:06:08 InnoDB: highest supported file format is Barracuda.
151014 14:06:08 InnoDB: Waiting for the background threads to start
151014 14:06:09 InnoDB: 1.1.8 started; log sequence number 18872844901
151014 14:06:09 [Warning] 'proxies_priv' entry '@ root@xinge122' ignored in --skip-name-resolve mode.
151014 14:06:09 [Note] Event Scheduler: Loaded 0 events
151014 14:06:09 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.19-log' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)

可以看到将 /etc/my.cnf 权限修改正常后,MySQL实例就可以正常启动了。

通过这个案例可以得到如下启发:

修改Linux操作系统根目录下目录和文件的权限是非常危险的;

比如修改了 /etc/ssh 目录的权限,ssh就无法使用了;如果是 /etc/security 或者 /etc/init.d/sshd 文件被修改了,则root用户就无法登录到系统了;

所以必须注意系统权限,尤其是 /etc/ 目录下的文件权限,不能随便修改。

不论是开发,还是运维都是需要规范化,尽量避免都以root用户直接操作;对于软件和应用程序的存放位置,也放在单独规定的目录中,使用各个应用单独的用户进行操作;

对于系统文件轻易不要修改,尤其不要随便修改/etc/相关的系统文件,如果要修改,可以先测试,确认没有问题后再进行修改。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • MySQL存储过程in、out和inout参数示例和总结

    存储过程 1.创建存储过程并查看全局变量 mysql> create database yy; Query OK, 1 row affected (0.00 sec) mysql> use yy; Database changed mysql> set @num1=10,@num2=20,@num3=30; //设置全局变量 mysql> delimiter $$ mysql> create procedure p(in num1 int,out num2 int,inout

  • mysql 5.7 的 /etc/my.cnf 参数介绍

    下面是 mysql 5.7 的 /etc/my.cnf 的一些常用参数,自己记录一下,随时补充完善. Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf [client] port = 3306 default-character-set=utf8mb4 socket=/tmp/mysql.sock

  • PostgreSQL使用MySQL外表的步骤详解(mysql_fdw)

    浅谈 postgres不知不觉已经升到了版本13,记得两年前还是版本10,当然这中间一直期望着哪天能在项目中使用postgresql,现在已实现哈-: 顺带说一下:使用postgresql的原因是它的生态完整,还有一个很重要的点儿是速度快这个在第10版的时 这么说也许还为时过早, 但是在13这一版本下一点儿也不为过,真的太快了,我简单的用500w的数据做聚合,在不建立索引(主键除外)的情况下 执行一个聚合操作,postgres 的速度是mysql的8倍,真的太快了-:好了,这一章节我就聊一聊我实

  • MySQL用户管理与PostgreSQL用户管理的区别说明

    一. MySQL用户管理 [例1.1]使用root用户登录到本地mysql服务器的test库中 mysql -uroot -p -hlocalhost test [例1.2]使用root用户登录到本地mysql服务器的test库中,执行一条查询语句 mysql -uroot -p -hlocalhost test -e "DESC person;" [例1.3]使用CREATE USER创建一个用户,用户名是jeffrey,密码是mypass,主机名是localhost CREATE

  • MySQL将select结果执行update的实例教程

    一.单表查询->更新 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 二.多表联合查询->更新 UPDATE a INNER JOIN (SELECT yy FROM b) c ON a.id = c.id SET a.xx = c.yy [WHERE Clause] 上面的 INNER JOIN ,可以换为 LEFT JOIN . RIGHT JOIN 等联合查询. SET 后的字段必须为 a

  • MYSQL慢查询与日志的设置与测试

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录) long_query_time 查询超过多少秒才记录 三.设置步骤 1.查看慢查询相关参数 mysql> show variables like 'slow_quer

  • MySQL为Null会导致5个问题(个个致命)

    正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示: "兵马未动粮草先行",看完了相关的配置之后,我们先来创建一张测试表和一些测试数据. -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; -- 创建 person 表,其中 username 字段可为空,并为其设置普通索引 CREATE TABLE person ( id INT PRIMARY KEY auto_increment, name VARCHAR(2

  • Mysql 获取表的comment 字段操作

    我就废话不多说了,大家还是直接看代码吧~ -- 查看获取表内字段注释: show full columns from tablename; -- 或是 show full fields from tablename; -- 或是,在元数据的表里面看 Select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释 from INFORMATION_SCHEMA.COLUMNS Where table_name = 'companies'##表名

  • 解决Linux安装mysql 在/etc下没有my.cnf的问题

    今天因为想改mysql的端口,结果发现我的/etc/目录下并没有my.cnf这个文件,我就看了下网上有没有解决的方法. 看了好多关于Linux下没有my.cnf的博客,都是说将my-medium.cnf 移动到etc 并且改名为my.cnf,但是我也没有my-medium.cnf 啊,后面才知道,从5.7.18开始官方不再二进制包中提供my-default.cnf文件. 具体可参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installati

  • linux 安装 mysql 8.0.19 详细步骤及问题解决方法

    最近买了个腾讯云服务器,搭建环境. 该笔记用于系统上未装过mysql的干净系统第一次安装mysql.自己指定安装目录,指定数据文件目录. linux系统版本: CentOS 7.3 64位 安装源文件版本:mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz mysql安装位置:/software/mysql 数据库文件数据位置:/data/mysql 注:未防止混淆,这里都用绝对路径执行命令 除了文件内容中的#,这里所有带#都是linux命令 >mysql 是m

  • Linux安装MySQL教程(二进制分发版)

    本教程为大家分享了Linux安装MySQL详细步骤,供大家参考,具体内容如下 第一步: 下载MySQL安装包 进入mysql官网,进入download界面,选择自己需要的版本和操作平台,我的电脑是Centos 7.我这里操作系统选择linux Generic,版本选最新.(我觉得选红帽系统应该也行,因为CentOS 本来和红帽就差不多) 你可以在windows环境下载到本地,再复制到linux目录下面,而这里我采用的是:直接在linux下使用以下指令下载 [root@hhh ~]# wget h

  • linux安装mysql数据库以及配置Java项目的图文详解

    一.安装mysql数据库 ①下载并解压上传到/opt/soft目录(soft目录是自己创建的) ②解压:tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar ③清空linux自带的数据库 1.查看是否有旧版本的数据库: rpm -qa |grep mysql rpm -qa | grep mariadb 2. 卸载已有的数据库:(卸载会把这个包的依赖包也一起卸载) yum -y remove mariadb-libs.x86_64 ④安装mysql社

  • Linux安装mysql并配置外网访问的实例

    配置步骤 1.查看是否配置DNS 如果没有配置DNS参照前文配置DNS 配置相关 如果没有配置DNS yum命令找不到Linux软件库的 DNS配置免费的 DNS1=114.114.114.114即可,也可以加一个备用的DNS2=119.29.29.29 2.用yum安装mysql yum -y install mysql mysql-server mysql-dev 这里用yum 进行-y 同意操作,后面的三个软件分别是mysql, mysql-server,mysql-dev无关顺序 3.启

  • linux安装mysql 8.0.x的完整步骤

    MySQL MySQL简介 MySQL原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购.2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品. MySQL在过去由于性能高.成本低.可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中.随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科.Google和

  • 关于Linux安装mysql默认配置文件位置详解

    在linux下面安装mysql如果在/etc下面没有存在my.cnf配置文件 解决方式如下: 1.通过which mysqld命令来查看mysql的安装位置 2.通过/usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'命令来查看mysql使用的配置文件默认路径,(注意红色标注的是通过步骤1的命令获取到的mysql安装目录路径) 通过上图所示我们可以看出,mysql读取配置文件路径的顺序以及位置,首先查看

  • linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

    1. MySQL的安装与配置: 在Ubuntu下安装MySQL方法很简单,使用如下命令: 复制代码 代码如下: sudo apt-get install mysql-server 安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的时候自行设置,免得后面设置麻烦.安装结束之后,系统会启动mysql服务,可以使用命令去查看来验证mysql服务是否已经安装成功: 复制代码 代码如下: ps -el | grep mysql 如果mysql服务没有正常的运行,

  • Ubuntu18.04(linux)安装MySQL的方法步骤

    安装 mysql sudo apt-get --purge remove mysql-server mysql-common mysql-client sudo apt-get install mysql-server mysql-common mysql-client mysqladmin -u root password your-new-password sudo /etc/init.d/mysql restart mariadb apt-get install mariadb-serve

  • 完美解决docker安装mysql后Navicat连接不上的问题

    一.docker拉取镜像 docker pull mysql (默认拉取最新版本的) 二.运行mysql docker run -p 3308:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql 容器名:mysql 密码:123456 三.查看是否运行 docker ps -a 四.查看启动日志 docker logs mysql mysql就是刚刚启动的容器名,确认mysql启动是正常的 五.错误 当我用Navicat进行链接的时候

随机推荐