先写个题外话,老是要忘记,byte和bit的区别,1byte=8bit,即一个字节有8位
1.创建权限 GRANT命令
GRANT privileges [columns] //privileges是由逗号分开的一组权限 columns可以对每一列进行权限的设置
ON items //items是新权限所应用于的数据库或表 可以将项目指定为*.*,这叫赋予全局权限,dbname.*表示指定数据库中的所有表,以dbname.tablename 制定单个表
TO user_name [IDENTIFIED BY 'password'] //user_name可以包含一个主机名 如 allen@allen.com
[REQUIRE ssl_options] //require子句允许指定用户是否必须通过加密套接字连接,或者指定其他的ssl选项
[WITH [GRANT OPTION|limit_options]]//WITH GRANT OPTION 选项如果指定,表示允许用户再向别人授予自己所拥有的权限
我们也可以指定MAX_REQUIRE_PER_HOUR n
MAX_UPDATES_PER_HOUR n
MAX_CONNECTIONS_PER_HOUR n
这些子句可以指定每一个用户每小时执行查询、更新、和连接的次数,在共享的系统上限制单个用户的负载时,非常有用
2.关于权限控制的5个系统表:mysql.user mysql.db mysql.host mysql.tables_priv mysql.columns_priv\
3.权限的类型和级别
适用于一般用户的权限
SELECT----------表、列-----------------选择行
UPDATE----------表、列-----------------修改行
DELETE----------表----------------------删除行
INSERT----------表、列-----------------插入行
ALTER------------表--------------------创建和拖动表索引(这个权限需需慎重考虑)
INDEX------------表----------------------改变表的结构
CREATE----------数据库、表-------------创建数据库或表
DROP------------数据库、表-------------拖动(删除)数据库或表
适用于赋予管理员的权限
CREATE TEMPORRARY TABLES--------------允许在使用create tables 的时候使用temporary关键字
FILE--------------------------------------允许将数据从文件读入表,或从表读入文件(这个权限一般也会给一般用户,但要注意)
LOCK TABLES-------------------------------允许使用lock tables语句
RELOAD-----------------------------------允许重新载入授权表、清空授权、主机、日志、表
PERLICATION CLIENT-----------------------允许在复制主机和从机上使用show status
PERLICATION SLAVE-----------------------允许复制从服务器连接到主服务器
SHOW DATABASES-------------------------允许查看所有数据库
SHUTDOWN-------------------------------允许关闭mysql服务器
SUPER------------------------------------允许关闭属于任何用户的线程
几个特定的权限
ALL------------------------------------授予上述两表的所有权限,也可以写成ALL PRIVILEGE
USAGE-----------------------------------创建一个用户仅允许他登录,但不允许进行任何操作
4.删除权限 REVOKE权限
REVOKE privilege [(columns)]
ON items
FROM user_name
如果给出WITH GRANT OPTION子句,可以如下子句撤销(以及所有其他权限)
REVOKE All PRIVILEGES,GRANT
FROM user_name
下面是几个例子:
mysql-> grant all privileges
on *
to fred identified by '123456'
with grant option;
mysql-> grant usage
on books.*
to sally;
mysql-> grant select,alter,updetes
on books.*
to fred;
mysql-> revoke alter
on books.*
from fred;
5.指定了auto_increment的列必须是索引列
6.char类型的列,系统将为其自动填充空格,varchar类型可以根据需要分配存储空间,这样占用空间小,但是速度没有前者快
7.创建索引
CREATE [UNIQUE|FULLTEXT] INDEX index_name //FULLTEXT用来索引文本字段
ON table_name (index_column_name[(length)] [ASC|DESC]) //length 可以指定该字段前length个字符被索引,默认升序
8.MySQL中的数据库将被映射到具有某种文件结构的目录,而数据表将被映射为某个文件
需要配置目录和包含数据文件的位置,如mysqladmin -h host -u root -p variables;然后再查询datadir变量
9.MySQL列数据类型共3种:
数字(整型和浮点型)
日期和时间(date,time,datetime,timestamp[(m)],year[(2|4)])
字符串(普通字符串(char和varchar),TEXT和BLOB,SET和ENUM)