启动项
重新启动才生效
命令行修改 (当次生效)
- 禁止TCP/IP网络通信
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 匹配的模式]; (默认显示会话变量)
注意:
- 若改了全局变量,不会影响已连接的用户,之后会受影响。
- 不是所用变量都有全局会话之分。(例如,max_connections 只能是全局)
- 有些变量是只读不能改。(例如,version)
- 部分系统变量可以作为启动项设置,有的系统变量时启动后才有(character_set_client), 有的启动项也不是系统变量(defaults-file)
除此之外,我们还可以用如下语句查看系统运行状态变量,但是不能修改:
SHOW [GLOBAL | SESSION] STATUS [LIKE 匹配模式]