一千行MySQL学习笔记(十二)

/* 用户和权限管理 */ -----------

用户信息表:mysql.user

-- 刷新权限
FLUSH PRIVILEGES

-- 增加用户
CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
- 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
- 只能创建用户,不能赋予权限。
- 用户名,注意引号:如 ‘user_name‘@‘192.168.1.1‘- 密码也需引号,纯数字密码也要加引号
- 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD

-- 重命名用户
RENAME USER old_user TO new_user

-- 设置密码
SET PASSWORD = PASSWORD(‘密码‘) -- 为当前用户设置密码
SET PASSWORD FOR 用户名 = PASSWORD(‘密码‘) -- 为指定用户设置密码

-- 删除用户
DROP USER 用户名

-- 分配权限/添加用户
GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] ‘password‘]
- all privileges 表示所有权限
- *.* 表示所有库的所有表
- 库名.表名 表示某库下面的某表

-- 查看权限
SHOW GRANTS FOR 用户名 -- 查看当前用户权限
SHOW GRANTS; 或 SHOW GRANTS FOR CURRENT_USER; 或 SHOW GRANTS FOR CURRENT_USER();

-- 撤消权限
REVOKE 权限列表 ON 表名 FROM 用户名

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名-- 撤销所有权限

-- 权限层级

-- 要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。

全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user

GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。

数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。

表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv

当使用REVOKE时,您必须指定与被授权列相同的列。

-- 权限列表
ALL [PRIVILEGES] -- 设置除GRANT OPTION之外的所有简单权限

ALTER -- 允许使用ALTER TABLE
ALTER ROUTINE -- 更改或取消已存储的子程序
CREATE -- 允许使用CREATE TABLE
CREATE ROUTINE -- 创建已存储的子程序
CREATE TEMPORARY TABLES -- 允许使用CREATE TEMPORARY TABLE

CREATE USER -- 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW -- 允许使用CREATE VIEW
DELETE -- 允许使用DELETE
DROP -- 允许使用DROP TABLE
EXECUTE -- 允许用户运行已存储的子程序

FILE -- 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
INDEX -- 允许使用CREATE INDEX和DROP INDEX
INSERT -- 允许使用INSERT
LOCK TABLES -- 允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS -- 允许使用SHOW FULL PROCESSLIST

REFERENCES -- 未被实施
RELOAD -- 允许使用FLUSH
REPLICATION CLIENT -- 允许用户询问从属服务器或主服务器的地址
REPLICATION SLAVE -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
SELECT -- 允许使用SELECT

SHOW DATABASES -- 显示所有数据库
SHOW VIEW -- 允许使用SHOW CREATE VIEW
SHUTDOWN -- 允许使用mysqladmin shutdown
SUPER -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
UPDATE -- 允许使用UPDATEUSAGE -- “无权限”的同义词
GRANT OPTION -- 允许授予权限

/* 表维护 */

-- 分析和存储表的关键字分布
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE 表名 ...

-- 检查一个或多个表是否有错误
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

-- 整理数据文件的碎片
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

/* 杂项 */ ------------------
1. 可用反引号(`)为标识符(库名、表名、字段名、索引、别名)包裹,以避免与关键字重名!中文也可以作为标识符!

2. 每个库目录存在一个保存当前数据库的选项文件db.opt。

3. 注释:
单行注释 # 注释内容
多行注释 /* 注释内容 */
单行注释 -- 注释内容 (标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))

4. 模式通配符:
_ 任意单个字符
% 任意多个字符,甚至包括零字符
单引号需要进行转义 \‘

5. CMD命令行内的语句结束符可以为 ";", "\G", "\g",仅影响显示结果。其他地方还是用分号结束。delimiter 可修改当前对话的语句结束符。
6. SQL对大小写不敏感
7. 清除已有语句:\c

(剧终)           (作者:Shocker 来源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)
时间: 2024-10-14 10:17:41

一千行MySQL学习笔记(十二)的相关文章

一千行MySQL学习笔记(十)

--// 内置函数 ------------ 数值函数abs(x) -- 绝对值 abs(-10.9) = 10format(x, d) -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46ceil(x) -- 向上取整 ceil(10.1) = 11floor(x) -- 向下取整 floor (10.1) = 10round(x) -- 四舍五入去整mod(m, n) -- m%n m mod n 求余 10%3=1pi() -- 获得圆周率po

一千行MySQL学习笔记

/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES --

一千行MySQL学习笔记【博客园】

/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES --

一千行MySQL学习笔记(七)

/* 事务(transaction) */ ------------ 事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全成功要不全失败. - 支持连续SQL的集体成功或集体撤销. - 事务是数据库在数据晚自习方面的一个功能. - 需要利用 InnoDB 或 BDB 存储引擎,对自动提交的特性支持完成. - InnoDB被称为事务安全型引擎. -- 事务开启 START TRANSACTION; 或者 BEGIN; 开启事务后,所有被执行的SQL语句均被认作当前事务内的SQL语句. -- 事

一千行MySQL学习笔记(六)

/* 备份与还原 */ ------------- 备份,将数据的结构与表内数据保存起来. 利用 mysqldump 指令完成. -- 导出 1. 导出一张表 mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)2. 导出多张表 mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)3. 导出所有表 mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)4. 导出一个库 mysqldump

MySQL学习笔记十二:数据备份与恢复

数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql服务器,或者对需要备份的对象进行锁定,要不很容易造成备份的不一致性,恢复时可能会丢失数据.物理备份的方式有很多,如操作系统命令copy(cp),scp,mysqlbackup,以及MyISAM表的mysqlhotcopy. 逻辑备份 逻辑备份是对数据库的逻辑结构(create database,cr

一千行MySQL学习笔记(十一)

--// 存储函数,自定义函数 ---------- -- 新建 CREATE FUNCTION function_name (参数列表) RETURNS 返回值类型 函数体 - 函数名,应该合法的标识符,并且不应该与已有的关键字冲突. - 一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库. - 参数部分,由"参数名"和"参数类型"组成.多个参数用逗号隔开. - 函数体由多条可用的mysql

一千行MySQL学习笔记(八)

/* 触发器 */ ------------------ 触发程序是与表有关的命名数据库对象,当该表出现特定事件时,将激活该对象 监听:记录的增加.修改.删除. -- 创建触发器 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt参数:trigger_time是触发程序的动作时间.它可以是 before 或 after,以指明触发程序是在激活它的语句之前或之后触发

一千行MySQL学习笔记(五)

/* 导入导出 */ ------------- select * into outfile 文件地址 [控制格式] from 表名; -- 导出表数据load data [local] infile 文件地址 [replace|ignore] into table 表名 [控制格式]; -- 导入数据 生成的数据默认的分隔符是制表符 local未指定,则数据文件必须在服务器上 replace 和 ignore 关键词控制对现有的唯一键记录的重复的处理 -- 控制格式 fields 控制字段格式