创建用户:
create user '用户名' identified by "为创建的用户设置密码";
为创建的用户分配操作权限:
grant <操作集合> on <操作对象> to '用户名';
操作集合:[insert,update,delete,all privileges]
操作对象:数据库列表下某个数据库databasei的所有表格-> databasei.* ,数据库下的某个表格tablei -> databasei.tablei;
如果希望创建的用户可以转授权限
grant <操作集合> on <操作对象> to '用户名' with grant option;
以root身份登陆mysql并输入密码
mysql -uroot -p
Enter password:
查看数据库
show databases;
+--------------------+
| Database |
+--------------------+
| Experiment |
| Experiment2 |
| Experiment3 |
...
mysql> use Experiment3
mysql> show tables;
+-----------------------+
| Tables_in_experiment3 |
+-----------------------+
| course |
+-----------------------+
然后我进入了Experiment3数据库use Experiment3
,在该数据库下进行了用户的创建,授权等,之后再以test1的身份进入mysql输入密码,再对数据库中的表格进行处理
mysql> INSERT INTO course VALUES('C3','chemi','4');
报错ERROR 1046 (3D000): No database selected
然后我突然意识到了,用户的创建位置不该是在Experiment3数据库里面,把用户的权限回收回来之后,重新以root身份登陆mysql,并重新创建用户
mysql> create user 'test1' identified by "1234";
报错ERROR 1396 (HY000): Operation CREATE USER failed for 'test1'@'%'
查资料了解到可能是之前权限回收的时候没有删除这个用户
将这个test1drop掉
mysql> drop user 'test1'@'%';
Query OK, 0 rows affected (0.01 sec)
重新创建用户test1
mysql> create user 'test1' identified by "1234";
Query OK, 0 rows affected (0.01 sec)
为test1用户分配对Experiment3数据库下course表格的insert,update权限
mysql> grant insert,update on Experiment3.course to test1 with grant option;
Query OK, 0 rows affected (0.00 sec)
更新一下flush privileges;
退出exit
再以test1的身份登陆mysql -u test1 -p
输入密码‘1234’
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.01 sec)
再对之前的表格进行insert操作
mysql> INSERT INTO Experiment3.course VALUES('C3','chemi','4');
Query OK, 1 row affected (0.00 sec)
也可以在test1下对test2进行权限的赋值
mysql> grant update on Experiment3.course to test2 with grant option;
Query OK, 0 rows affected (0.01 sec)
退出test1exit
以root身份登陆之后,删除test1的update权限:
revoke update on Experiment3.course from test1;
查看用户的权限
mysql> SHOW GRANTS for '用户';