一、数据库
查看数据库
show databases;
创建数据库
create database db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # utf8编码
create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; # gbk编码
使用数据库
use db1;
二、账号
创建只读帐号
GRANT SELECT ON database.* to 'only_read'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
SELECT:表示只有查询权限;
database.*:表示名称为database的库下的所有表;
only_read:为帐号名;
%:为所有来源IP;
123456:为密码
创建所有权限帐号
GRANT ALL PRIVILEGES ON database.* TO 'xxx'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ALL:表示所有权限;
database.*:表示名称为database的库下的所有表;
xxx:为帐号名;
%:为所有来源IP;
123456:为密码;
WITH GRANT OPTION:表示有再授权权限;
更新帐号密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
update user set authentication_string = password('123456') where User = 'someone';
FLUSH PRIVILEGES;
user:表名;
authentication_string:密码字段(在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string);
password('123456'):将密码更新为123456(请按实际情况修改);
where User = 'someone':查询条件(请事先先查询该表确认);
三、查询超时
查询超时限制,让慢查询及时结束,以免影响整个系统
mysql 5.6 及以后,有语句执行超时时间变量,用于在服务端对 select 语句进行超时时间限制;
mysql 5.6 中,名为: max_statement_time (毫秒)
mysql 5.7 以后,改成: max_execution_time (毫秒)
阿里云环境中:名称为:loose_max_execution_time,默认值0,配置后不需要重启(阿里云解释:statement be interrupted if the executing time exceeds this value)
超过这个时间,mysql 就终止 select 语句的执行,客户端抛异常: 1907: Query execution was interrupted, max_execution_time exceeded.
三种设置粒度:
(1)全局设置
SET GLOBAL MAX_EXECUTION_TIME=1000;
(2)对某个session设置
SET SESSION MAX_EXECUTION_TIME=1000;
(3)对某个语句设置
SELECT max_execution_time=1000 SLEEP(10), a.* from test a;