grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’
或者,用一条 MySQL 命令来替代:
grant select, insert, update, delete on testdb.* to common_user@’%’
9>.grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。
grant 创建、修改、删除 MySQL 数据表结构权限。
grant create on testdb.* to developer@’192.168.0.%’;
grant alter on testdb.* to developer@’192.168.0.%’;
grant drop on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 外键权限。
grant references on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 临时表权限。
grant create temporary tables on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 索引权限。
grant index on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 视图、查看视图源代码 权限。
grant create view on testdb.* to developer@’192.168.0.%’;
grant show view on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 存储过程、函数 权限。
grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status
grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure
grant execute on testdb.* to developer@’192.168.0.%’;
10>.grant 普通 DBA 管理某个 MySQL 数据库的权限。
grant all privileges on testdb to dba@’localhost’
其中,关键字 “privileges” 可以省略。
11>.grant 高级 DBA 管理 MySQL 中所有数据库的权限。
grant all on *.* to dba@’localhost’
12>.MySQL grant 权限,分别可以作用在多个层次上。
1. grant 作用在整个 MySQL 服务器上:
grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库
2. grant 作用在单个数据库上:
grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。
3. grant 作用在单个数据表上:
grant select, insert, update, delete on testdb.orders to dba@localhost;
4. grant 作用在表中的列上:
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
5. grant 作用在存储过程、函数上:
grant execute on procedure testdb.pr_add to ’dba’@’localhost’
grant execute on function testdb.fn_add to ’dba’@’localhost’
注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES。
权限
权限
说明
all
alter
alter routine
使用alter procedure 和drop procedure
create
create routine
使用create procedure
create temporary tables
使用create temporary table
create user
create view
delete
drop
execute
使用call和存储过程
file
使用select into outfile 和load data infile
grant option
可以使用grant和revoke
index
可以使用create index 和drop index
insert
lock tables
锁表
process
使用show full processlist
reload
使用flush
replication client
服务器位置访问
replocation slave
由复制从属使用
select
show databases
show view
shutdown
使用mysqladmin shutdown 来关闭mysql
super
update
usage
无访问权限
13>密码的哈希值可以使用password()函数获取,如:
select password('123466');
所以在新建用户的时候可以先查到hash值再建用户:
grant select on *.* to 'zx_root'@'%' identified by '6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
14>create user创建的用户没有任何权限,还需要grant授权,而grant不仅可以创建用户,还可以在创建的同时对用户授权
15、鸡汤
root用户密码丢失的解决办法:
mysql对于root用户密码丢失的情况采取了对应的机制,可以通过特殊的方法登陆,然后在root下重新设置密码
(1)使用--skip-grant-tables 选项启动mysql服务,此选项启动后任何用户都能访问数据库
windows下 可以通过如下命令:
mysqld --skip-grant-tables
或
mysqld-nt --skip-grant-tables
linux下
mysqld_safe --skip-grant-tables user=mysql
或
/etc/init.d/mysql start-mysqld--skip-grant-tables
启动后就可以通过root取登陆了
命令运行后,用户无法再当前窗口输入指令,此时打开另外一个窗口,输入不加密码的登陆命令
mysql -u root
再进行更新
在刷新下 flush privileges
关闭输入--skip-grant-tables命令的窗口