dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项:
- .:授予该数据库服务器所有数据库的权限。
- dbName.*:授予dbName数据库所有表的权限。
- dbName.dbTable:授予数据库dbName中dbTable表的权限。
username@host
表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型:
- localhost:只允许该用户在本地登录,不能远程登录。
- %:允许在除本机之外的任何一台机器远程登录。
- 192.168.52.32:具体的IP表示只允许该用户从特定IP登录。
password指定该用户登录时的面。
flush privileges表示刷新权限变更。
===============================================================================
新建普通用户——3种方法
mysql数据库下面的user表,存放各种用户和权限信息。
一、用create user语句来新建普通用户
使用create user语句来创建新用户时,必须要拥有create user权限。
语法格式: create user user [ identified by [ PASSWORD ] 'password' ] , user [ identified by [ PASSWORD ] 'password' ]……
user:表示新建用户的账户,user由用户名(user)和主机名(host)构成;
identified by:关键字用来设置用户的密码;
password:表示用户的密码;如果密码是一个普通的字符串,就不需要用PASSWORD关键字。
注意:create user语句可以同时创建多个用户,新用户可以没有初始密码。
create user 'sww'@'localhost' identified by '123456'; /*创建一个用户*/ select * from user; mysql -h localhost -P 3306 -u sww -p123456 /*DOS窗口中登录查看*/ drop user 'sww'@'localhost'; /*删除这个新建的用户*/ select * from user;
新建用户:
查询user表:
DOS窗口登录查看,是否创建正确:
删除新建的用户:
查询删除后的user表:
======================================================================================
======================================================================================
二、insert语句来新建用户
使用insert语句直接将用户信息添加到mysql.user表中。但是必须拥有对mysql.user表的insert权限。
语法格式: insert into mysql.user ( host,user,password ) values ( 'hostname','username',PASSWOR('password') );
其中,PASSWORD()函数时用来给密码加密的。因为只设置了3个字段的值,那么其它字段的取值为其默认值。
如果这3个字段以外的某个字段没有默认值,这个语句将不能执行。需要将没有默认值的字段也设置值。
通常ssl_cipher,x509_issuer,x509_subject这3个字段没有默认值。因此必须为这3个字段设置初始值。
此时insert语句的格式如下:
insert into mysql.user( Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values ('hostname','username',PASSWORD('password'),'','','');
注意:mysql数据库下的user表中,ssl_cipher,x509_issuer,x509_subject这3个字段没有默认值。
因此向user表中插入新记录时,一定要设置这3个字段的值,否则insert语句将不能执行。
而且,password字段一定要使用PASSWORD()函数将其加密。
insert into mysql.user( Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values ('127.0.0.1','yuan',PASSWORD('123'),'','','') flush privileges; /*这个命令让mysql数据库中的user表,重新装载权限*/ select * from user; drop user 'yuan'@'127.0.0.1'; mysql -h 127.0.0.1 -P 3306 -u yuan -p123 select * from user;
查询user表:
新建用户:
查询user表:
DOS窗口登录:
删除新建用户:
查看user表;
===============================================================
===============================================================
三、grant语句来新建普通用户
使用grant语句来创建新的用户。在创建用户时,可以为其用户授权。但是必须拥有grant权限。
这里只演示新建用户方法。
语法格式:
grant priv_type on database.table
to user [ identified by [ PASSWORD ] 'password' ]
[, user [ identified by [ PASSWORD ] 'password' ]……
priv_type:表示新用户的权限;
database.table:表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;
user:表示新建用户的账户,user由用户名(user)和主机名(host)构成;
identified by:关键字用来设置用户的密码;
password:表示用户的密码;如果密码是一个普通的字符串,就不需要用PASSWORD关键字。
注意:PS:这里grant语句只是其中创建新用户的部分的参数,其它详细的后面介绍。
grant select on *.* to 'test5'@'localhost' identified by 'test5'; select * from user; mysql -h localhost -P 3306 -u test5 -ptest5 drop user 'test5'@'localhost'; select * from user;
查看用户表:
新建用户:
查询新建用户之后的用户表:
DOS窗口登录验证:
删除新建用户:
再次查询用户表:
==============================================================
==============================================================
删除普通用户
方法一:使用drop user语句来删除普通用户
使用drop user语句来删除普通用户时,必须拥有drop user权限。
语法格式: drop user user [ ,user ]……
user:是需要删除的用户,由用户的用户名(user)和主机名(host)组成;
可以同时删除多个用户,之间用逗号隔开;
示例: drop user 'test5'@'localhost';
-----------------------------------------------------------------------------------------------------------------------------
方法二:用delete语句来删除普通用户
可以使用delete语句直接将用户的信息从mysql.user表中删除。但是必须拥有对mysql.user表的delete权限。
语法格式: delete from mysql.user where Host = 'hostname' and User = 'username';
然后执行 : flush privileges; 让命令生效
Host和User都是mysql.user表的主键,因此两个字段的值才能唯一确定一条记录;
grant select on *.* to 'test5'@'localhost' identified by 'test5'; select * from user; mysql -h localhost -P 3306 -u test5 -ptest5 /* drop user 'test5'@'localhost'; */ delete from mysql.user where Host = 'localhost' and User = 'test5'; /*效果一样*/
flush privileges; /*让命令生效*/ /*执行该命令,可以从mysql数据库中的user表中的数据重新加载权限*/ select * from user;