电光石火-穿越时空电光石火-穿越时空


Mysql操作

一、数据库
查看数据库

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;

本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火-穿越时空》 => Mysql操作
本文地址:http://www.ilkhome.cn/index.php/archives/670/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 Mysql操作,谢谢。

评论