看了《MySQL核心技术手册》,在这里整理一下知识点。
安全、用户语句和函数
用户的访问权限可以是全局层级(服务器上的所有数据库),也可以是数据库层级、表层级和列层级。
用户的权限存储在授权表中,位于服务器的mysql数据库中:
user 全局级权限
db 数据库层级权限
tables_priv 表层级权限
column_priv 列层级权限
MmySQL相关语句:
- CREATE USER:在服务器上创建新用户账户。@后跟主机IP地址或主机名,IDENTIFIED BY后跟密码,但CREATE USER无法指定用户权限,需要再使用GRANT语句设置权限。
如:
CREATE USER 'xiaohui'@'localhost' IDENTIFIED BY '123456';
- DROP USER :删除MySQL服务器的用户账户,使用该语句,需要拥有包含用户账户信息和权限的mysql数据库的CREATE USER 和DELETE权限。
DROP USER 'xiaohui'@'localhost';
- FLUSH:可以清除并重载MySQL临时缓存。必须拥有RELOAD权限。
FLUSH PRIVILEGES; //重新载入用户权限
- GRANT:创建新增用户,并授予用户权限。
//授予所有基本权限 WITH GRANT OPTION:令用户具备GRANT权限
GRANT ALL PRIVILEGES ON *.* TO 'xiaohui'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION
//授予oa数据库的所有表的select和update权限
GRANT SELECT,UPDATE ON oa.* TO 'xiaohui'@'localhost' IDENTIFIED BY '123456'
- RENAME USER:修改用户名或主机
RENAME USER 'xiaohui'@'localhost' TO 'xiaohui2'@'localhost'
- SET PASSWORD:修改密码
SET PASSWORD FOR 'xiaohui2'@'localhosst' = PASSWORD('12345678')
相关函数
- CURRENT_USER():当前的用户名和主机
数据库和表模式语句
添加新列
//加到表的末尾
ALTER TABLE `user` ADD COLUMN NAME VARCHAR(10)
//加到表的开头
ALTER TABLE `user` ADD COLUMN NAME VARCHAR(10) FIRST
//加到id列后
ALTER TABLE `user` ADD COLUMN NAME VARCHAR(10) AFTER id
添加索引
//基于name列前五个字符和id列的索引name_id
ALTER TABLE `user` ADD INDEX name_id (NAME(5),id)
添加外键
ALTER TABLE `user` ADD FOREIGN KEY user_role (role_id) REFERENCES `role` (id) ON DELETE SET NULL;
修改列名和类型
ALTER TABLE `user` CHANGE COLUMN NAME VARCHAR(10) newname VARCHAR(20);
//modify不可修改列名
ALTER TABLE `user` MODIFY COLUMN NAME VARCHAR(20);
删除列
ALTER TABLE `user` DROP COLUMN NAME
删除索引、主键和外键
ALTER TABLE `user` DROP INDEX name_id;
//若主键自增 先去掉自增 在删除
ALTER TABLE `user` CHANGE id id int ,DROP PRIMARY KEY id;
ALTER TABLE `user` DROP FOREIGN KEy role_id;
修改表名
ALTER TABLE `user`RENAME TO newuser;