我很好奇有没有办法在共享主机中找到 my.cnf 或者这个文件只能由 DBA 配置而没有人可以设置他/她自己的设置?
在共享主机环境中,您无法访问 my.cnf
您可以通过其他方式查看变量:
SHOW VARIABLES;
将显示所有设置的变量。有些可以在您的会话中使用SET
命令动态更改。有些可以在服务器中设置,以便新的数据库连接可以使用新设置的值。
SHOW VARIABLES LIKE 'innodb%'
显示所有 innodb 设置
SHOW VARIABLES LIKE '%timeout'
显示所有超时设置
SHOW VARIABLES LIKE '%buffer%'
显示所有缓冲区
##INFORMATION_SCHEMA
您还可以通过 INFORMATION_SCHEMA 数据库访问这些变量。访问这些值的表是
使用这些表的相同请求是
SHOW VARIABLES;
变成 SELECT * FROM information_schema.global_variables;
SHOW VARIABLES LIKE 'innodb%'
变成 SELECT * FROM information_schema .global_variables WHERE VARIABLE_NAME LIKE 'innodb%';
SHOW VARIABLES LIKE '%timeout'
变成 SELECT * FROM information_schema .global_variables WHERE VARIABLE_NAME LIKE '%timeout';
SHOW VARIABLES LIKE '%buffer%'
变成 SELECT * FROM information_schema .global_variables WHERE VARIABLE_NAME LIKE '%buffer%';
INFORMATION_SCHEMA.SESSION_VARIABLES 存在的原因是查看您的会话设置,如果您在会话期间将变量更改为与全局设置不同的内容。
SET GLOBAL max_connections = 1000;
现在将允许 1000 个数据库连接SET sort_buffer_size = 1024 * 1024 * 8;
将您的会话 sort_buffer_size 设置为 8MSET GLOBAL sort_buffer_size = 1024 * 1024 * 8;
将所有传入数据库连接的会话 sort_buffer_size 设置为 8M请记住,并非所有设置都可以动态更改。某些值,例如sort_buffer_size (session or global) 和max_connections (global only [session is N/A]),例如innodb_buffer_pool_size和lower_case_table_names,只能通过在 my.cnf 中设置并重新启动 mysqld 来更改。