mysql 库中的 user 表包含了当前所有用户, db 表中包含了用户对于数据库的权限.
select * from mysql.user;select * from mysql.db;
我们可以使用 insert 向其中插入数据来添加新用户, 然后对 db 添加权限. 最后别忘了调用 flush privileges;
使改动生效.
mysql 的系统变量分为两种, 全局变量 和 会话变量. 全局变量进程生命周期的, mysql 重启后就丢失了. 同时, 全局变量设置后, 只有从此以后开始的新连接才生效. 因此, 已经连接的会话不会有效果, 即便是当前执行语句所在会话都一样没有效果. 全局变量使用 set @@global.xxx=...;
设置, 通过 select @@global.xxx;
读取.
会话变量生命周期为当前连接, 断开重连就失效了. 会话使用 set @@session.xxx=...;
设置, 通过 select @@session.xxx;
读取. 其中 session.
是可选的. session
也可以使用 local
替换, 两者等价.
show variables
命令用于查看 mysql 服务的各项配置信息. 其本质是读取了全局或会话变量, 并以 table 的形式展现出来. 例如 show variables where Variable_name='time_zone';
等价于 select @@time_zone
.
在 variables 中, 大部分变量都是可读可写的, 不过也有部分是只读的.
# mysql 运行目录
select @@basedir;
# 数据存储目录
select @@datadir;
# 代表 mysql 启动时的操作系统时区. 只读
select @@system_time_zone;
# 显示当前时区
select @@time_zone;
当我们查询 UTC 时区的表时, 可以临时修改时区(set @@time_zone='...';
), 这样显示的时间就是当地时区时间了.
show grants;
show grants for 'xxx';