重新启动才生效
mysqld --skip-networking
mysqld --default-storage-engine=MyISAM (不能有空格)
mysql 会去多个地方找配置文件,主要按以下顺序(UNIX):
路径名 | 备注 |
---|---|
/etc/my.cnf | |
/etc/mysql/my.cnf | |
SYSCONFDIR/my.cnf | SYSCONFDIR :CMake 构建mysql指定的位置 |
$MYSQL_HOME/my.cnf | $MYSQL_HOME:我们自己设置的环境变量。只能放服务端的设置 |
defaults-extra-file | 命令行指定的额外配置文件路径 |
~/.my.cnf | 针对特定用户 |
~/.mylogin.cnf | 针对特定用户。只能放客户端设置。 |
配置文件的格式如下:
[server] (具体的启动项..) [mysqld] (具体的启动项..) [mysqld_safe] (具体的启动项..) [client] (具体的启动项..) [mysql] (具体的启动项..) [mysqladmin] (具体的启动项..)
不同的组给不同的程序用,server是给所有服务端程序用,client同理。我们也可以设置特定版本才能用的组[mysql-5.7]
按顺序搜索配置文件,最后搜索到的配置文件优先级最高。同一个文件,后边的能覆盖前面的,命令行的配置项优先级最高。
我们可以用如下语句指定mysql只搜索一个配置文件:
mysqld --default-file=/tmp/myconfig.txt
注意:这个和之前的defaults-extra-file可不一样
无须重新启动就可以生效
我们可以用如下语句来查看:
SHOW VARIABLES [LIKE 匹配模式]
当然我们可以把这些系统变量当成启动项,在命令行或者配置文件中设置,上边已经介绍了很多方法,这里就不细说了。(需要注意的是,启动项各个单词可以用 ‘-’ 或 ‘_’ 连接,而系统变量只能用 ‘_’ )。 下边我们主要说一下如何在服务器运行时改变。
首先,我们先将变量设置根据影响范围分为:
我们设置全局变量时可以这样写:
SET GLOBAL default_storage_engine = MyISAM; SET@@GLOBAL.default_storage_engine = MyISAM;
设置会话变量时这样写:
SET SESSION default_storage_engine = MyISAM; SET @@SESSION.default_storage_engine = MyISAM; SET default_storage_engine = MyISAM; (说明不指定时就是会话变量)
我们要查看全局或者会话变量时可以用如下语句:
SHOW [GLOBAL | SESSION] VARIABLES [LlKE 匹配的模式]; (默认显示会话变量)
注意:
除此之外,我们还可以用如下语句查看系统运行状态变量,但是不能修改:
SHOW [GLOBAL | SESSION] STATUS [LIKE 匹配模式]