学习《MySQL是怎样运行的》,感谢作者!
启动选项和配置文件 #
在程序启动时指定的设置项,也称之为启动选项startup option(可以在命令行中/配置文件中 指定)
由于在centos7中使用systemctl start mysqld启动mysql,所以好像没法用命令行指定启动选项了
程序(可能有些程序新版本已经没有了)的对应类别和能读取的组:
这里讲配置文件的方式设置启动选项:
#添加配置
vim /etc/my.cnf
[server]
skip-networking #禁止tcp网络连接
default-storage-engine=MyISAM #建表默认使用M有ISAM存储引擎
#效果
▶ mysql -h127.0.0.1 -uroot -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
#去除tcp网络连接限制后新建一个表
▶ mysql -h127.0.0.1 -uroot -p #可以连接上
mysql> create table default_storage_engine_demo(i int);
Query OK, 0 rows affected (0.01 sec)
mysql> show create table default_storage_engine_demo;
+-----------------------------+----------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------------------+----------------------------------------------------------------------------------------------------------------+
| default_storage_engine_demo | CREATE TABLE `default_storage_engine_demo` (
`i` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
如果多个配置文件都配置了某个选项,如/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
都配置了,则以最后一个配置的为主
如果同一个配置文件,比如[server]组和[mysqld]组都出现了default-storage-engine配置,则以后出现的组中的配置为准
如果一个启动选项既在命令行中出现,又在配置文件中配置,则以命令行中的为准
系统变量 #
查看系统变量
mysql> SHOW VARIABLES LIKE 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'default%';
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
| default_password_lifetime | 0 |
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| default_week_format | 0 |
+-------------------------------+-----------------------+
5 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
大部分系统变量,可以在服务器程序运行过程中动态修改而无须停止并重启服务器
不同作用范围的系统变量
GLOBAL(全局范围):影响服务器的整体操作
SESSION(会话范围):影响某个客户端连接的操作让之后新连接到服务器的客户端都用MyISAM作为默认的存储引擎
#不会对这之前已连接的客户端产生影响 SET GLOBAL default_storage_engine=MyISAM; #systemctl restart mysqld时候,该配置就失效了
只对本客户端使用
SET SESSION default_storage_engine=MyISAM;#或 SET default_storage_engine=MyISAM;
查看系统变量
SHOW [GLOBAL|SESSION] VARIABLES [LIKE '匹配的模式'];
状态变量 #
状态变量用来显示服务器程序运行状态
状态变量也分GLOBAL|SESSION
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
mysql> SHOW STATUS LIKE 'thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 |
| Threads_connected | 2 |
| Threads_created | 2 |
| Threads_running | 1 |
+-------------------+-------+