2013-09-15 回答
hi 楼主,在数据库中创建包含很多,视图,索引,临时表的创建权限都能分开赋予,你可以执行 show privileges 来查看权限参数,我这边就以创建表为例,只包含查询表功能,其他修改,删除,备份没有权限;以下是步骤:
1,create user 'tom'@'%' identified by '123456';---创建用户,无权限;
2, grant create,select on wangxh2.* to tom;-----把wangxh2库的所有表的创建和查询赋予tom
3,flush privileges;-----刷新权限表才能起效
接下来是测试:
mysql> show databases;
+--------------------+
| database |
+--------------------+
| information_schema |
| test |
| wangxh2 |
+--------------------+
3 rows in set (0.06 sec)
mysql> use wangxh2
database changed
mysql> show tables;
+-------------------+
| tables_in_wangxh2 |
+-------------------+
| test |
+-------------------+
1 row in set (0.00 sec)
mysql> drop test;
error 1064 (42000): you have an error in your sql syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'test' at line 1
mysql> drop table test;
error 1142 (42000): drop command denied to user 'tom'@'localhost' for table 'test'
mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
| 33554432 |
+----------+
1 row in set (0.01 sec)
mysql> insert into test values(1);
error 1142 (42000): insert command denied to user 'tom'@'localhost' for table 'test'
mysql> delete from test;
error 1142 (42000): delete command denied to user 'tom'@'localhost' for table 'test'
mysql> update test set id=1;
error 1142 (42000): update command denied to user 'tom'@'localhost' for table 'test'
mysql> create table test1 (id int);
query ok, 0 rows affected (0.02 sec)
mysql> insert into test1 values(1);
error 1142 (42000): insert command denied to user 'tom'@'localhost' for table 'test1'
[mysql@localhost ~]$ mysqldump -u tom -paidengshan wangxh2 >/home/mysql/aa.sql
mysqldump: got error: 1044: access denied for user 'tom'@'%' to database 'wangxh2' when using lock tables
[mysql@localhost ~]$
-----------------------------------------------------------------------------------------
以上测试发现,tom对wangxh2有建表,查询表的权限,但是修改,删除,新增,备份都没有权限,达到你的需求了