解决问题:修改Centos7下/etc/my.cnf配置文件的默认存储引擎不生效
Centos7系统默认不支持MySQL,而是支持Mariadb,它是MySQL的一个分支。
Mariadb数据库默认的存储引擎为InnoDB。
目的:将Mariadb数据库默认的存储引擎由InnoDB修改为MyISAM类型,并且永久生效。
1.修改/etc/my.cnf配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
#在/etc/my.cnf配置文件最后一行添加如下代码
#指定默认存储引擎为MyISAM类型
default_storage_engine=MyISAM
2.重启数据库服务,使其修改生效
[root@localhost ~]# systemctl restart mariadb
3.登录到数据库,查看其默认存储引擎是否修改成功
[root@localhost ~]# mysql -h localhost -uroot -p971224
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.65-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)
现象:明明修改了/etc/my.cnf配置文件的存储引擎,为什么在重启数据库服务之后仍然没有生效呢?
分析:存储引擎仍然为InnoDB说明/etc/my.cnf配置文件里添加的"default_storage_engine=MyISAM"并没有生效
解决方法:经多方查证,"default_storage_engine=MyISAM"这行代码必须添加在[mysqld]的行尾,禁止添加在整个文件内容的行尾,即禁止添加在[mysqld_safe]的行尾!!!
1.1.修改/etc/my.cnf配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#必须在[mysqld]的行尾添加如下代码才能生效,在/etc/my.cnf配置文件的行尾([mysqld_safe]的行尾)添加代码会导致存储引擎设置失败!!!
#指定默认存储引擎为MyISAM类型
default_storage_engine=MyISAM
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
2.重启数据库服务,使其修改生效
[root@localhost ~]# systemctl restart mariadb
3.登录到数据库,查看其默认存储引擎是否修改成功
[root@localhost ~]# mysql -h localhost -uroot -p971224
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.65-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)
总结:"default_storage_engine=MyISAM"这行代码必须添加在[mysqld]的行尾之后,重启Mariadb数据库服务,默认存储引擎已经修改生效了。
补充:将Mariadb数据库默认的存储引擎由InnoDB修改为MyISAM类型,并且临时生效。
进入Mariadb数据库之后输入"set default_storage_engine=MyISAM;"这行代码即可完成临时默认存储引擎的设置。
MariaDB [(none)]> set default_storage_engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show variables like 'default_storage_engine'; #再次查看数据库默认存储引擎类型
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)
注意:此修改仅临时有效,当再次重启客户端时,原先设置失效,默认存储引擎仍然是InnoDB。