MySQL数据库配置信息查看和修改

文章目录

    • 摘要
      • 查看
        • 查看数据基本信息
        • 查询sql_mode
        • 查看在配置文件中定义的变量
        • 查看MySQL的服务当前运行时的变量
          • 常用查询
          • 是否大小写敏感
            • 如何修改?
        • 查看MySQL默认认证方式
      • 修改MySQL的系统变量
        • 根据变量修改的方式
        • 根据变量的生效范围

摘要

当在不同团队间使用MySQL数据库时,最好是保证数据库的配置信息是一致的,否则会因为不同开发同事的SQL规范不一样,导致出现一些不必要的SQL问题;
本篇博客,主要记录如何查看数据的配置信息,及相关解释。

查看

查看数据基本信息

查看版本
select version();
或者
服务器端:mysql --version

显示所有可用的字符集;
SHOW CHARACTER SET;

只显示包含utf8的字符集;
SHOW CHARACTER SET LIKE '%utf8%';

显示所有的校对规则;
SHOW COLLATION;

只显示包含utf8的校对规则;
SHOW COLLATION LIKE '%utf8%';

查询sql_mode

select @@global.sql_mode;

select @@sql_mode;

确保一致,否则容易出问题;

查看在配置文件中定义的变量

mysqld --help --verbose

查看MySQL的服务当前运行时的变量

SHOW [{GLOBAL|SESSION}] VARIABLES [LIKE ''];
SELECT @@{GLOBAL|SESSION}.VARIABLE_NAME;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='VARIABLE_NAME';
SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='VARIABLE_NAME';
显示MySQL所有的系统变量
SHOW VARIABLES;
常用查询

查个别信息,通过like过滤:

show variables like '%datadir%';
show variables like '%basedir%';

SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation_%';
是否大小写敏感
show Variables like '%table_names';

lower_case_table_names=0 区分大小写
lower_case_table_names=1 表示不区分大小写

如何修改?

注意:
mysql 8.0以前,可以通过,先停止mysql服务,再修改配置文件(如lower_case_table_names=1),再重启mysql服务的方式来修改;

mysql8.0 要求我们不能在initialize之后再更改lower_case_table_names 的值,也就是说,再通过更改 my.cnf 文件是不管用的。所以需要删除原来的所有数据,我的数据目录是在/user/local/mysql/data/,进入到该目录进行删除,默认的路径为:/var/lib/mysql 删除该路径下的所有文件即可

查看MySQL默认认证方式

show global variables like '%default_auth%';

也支持修改。详见下面修改的章节。

举例,下面是静态修改:

# vi /etc/my.cnf

[mysqld]
default_authentication_plugin = mysql_native_password

修改MySQL的系统变量

根据变量修改的方式

动态变量:可以在MySQL运行时调整其指,并立即生效;
例如:

set global sort_buffer_size=value

静态变量:需要在配置文件中修改,重启服务后生效;例如:/etc/my.cnf

根据变量的生效范围

全局变量:服务级别的设定,对整个服务生效,所有回话,当时已经连接的不生效,重新连接才生效;
例如:

set global sort_buffer_size=value

会话变量:仅对当前会话生效,其他会话和新会话不受影响;会话结束值即销毁;
例如:

set session sort_buffer_size=value

你可能感兴趣的:(关系型数据库,mysql,数据库)