mysql 如何授予某个用户reload权限

mysql 如何授予某个用户reload权限,第1张

MySQL数据库中的表与其他任何关系表没有区别,都可以通过典型的SQL命令修改其结构和数据。可以使用GRANT和REVOKE命令。通过这些命令,可以创建和禁用用户,可以在线授予和撤回用户访问权限。在5.0版本中增加了两个新命令:CREATE USER和DROP USER。从而能更容易地增加新用户、删除和重命名用户,还增加了第三个命令RENAME USER用于重命名现有的用户。

使用CREATE USER命令创建用户

CREATE USER用于创建新的MySQL账户。要使用CREATE USER语句,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一条新记录。如果账户已经存在,则出现错误。使用自选的IDENTIFIED BY子句,'可以为账户设置一个密码。user和密码的设置方法与GRANT语句一样。其命令的原型如下:

CREATE USER user [IDENTIFIED BY [PASSWORD 'PASSWORD'] [,user [IDENTIFIED BY [PASSWORD'PASSWORD']]……

create user temp identified by '123456'

使用DROP USER命令删除用户

如果存在一个或是多个账户被闲置,应当考虑将其删除,确保不会用于可能的违法活动。利用DROP USER命令就能很容易地从权限表中删除用户的所有信息,即来自所有授权表的账户权限记录。DROP USER命令原型如下:

DROP USER user [,user] ……

ps"DROP USER不能自动关闭任何打开的用户对话;而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

使用RENAME USER命令重命名用户

RENAMEUSER语句用于对原有MySQL账户进行重命名。RENAMEUSER语句的命令原型如下:

RENAME USER old_user TO new_user [,old_user TO new_user] ……

ps:如果旧账户不存在或者新账户已存在,则会出现错误。

回到顶部

权限管理

GRANT和REVOKE命令

GRANT和REVOKE命令用来管理访问权限,也可以用来创建和删除用户,但在MySQL5.0.2中可以利用CREATE USER和DROP USER命令更容易地实现这些任务。GRANT和REVOKE命令对于谁可以 *** 作服务器及其内容的各个方面提供了多程度的控制,从谁可以关闭服务器,到谁可以修改特定表字段中的信息都能控制。

如果授权表拥有含有mixed-case数据库或表名称的权限记录,并且lower_case_table_names系统变量已设置,则不能使用REVOKE撤销权限,必须直接 *** 纵授权表。(当lower_case_table_names已设置时,GRANT将不会创建此类记录,但是此类记录可能已经在设置变量之前被创建了。)

授予的权限可以分为多个层级:

全局层级适用于一个给定服务器中的所有数据库,这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。

数据库层级适用于一个给定数据库中的所有目标,这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name .*和REVOKE ALL ON db_name .*只授予和撤销数据库权限。

表层级适用于一个给定表中的所有列,这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

列层级适用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。

子程序层级,CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序,这些权限可以被授予为全局层级和数据库层级;而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

grant all on *.* to user identified by '123456' with grant option

--授予用户名为user、密码为123456的用户使用所有数据库的所有权限,并允许他向其他人授予这些权限。

revoke all privileges,grant from user

grant usage on books.* to user identified by '123456'

--创建一个没有任何权限的常规用户

grant select,insert,update,delete,index,alter,create,drop on books.* to user

--为用户user授予适当的权限

revoke alter,create,drop on books.* from user

--减少权限

revoke all on books.* from user

--撤销所有的权限

p

可以找个免费/开源的客户端来使用,例如HeidiSQL或者Navicat Lite,你搜一下就能找到。

安装后在里面设置好连接(主要是填一下服务器地址、用户名及帐号)就能可以使用了(服务器端可能也需要设置赋予权限,不然就会出现类似“ERROR 1045 (28000): Access denied for user 'test1'@'localhost”这样的错误,如出现错误则见参考资料)。

默认root用户就具有所有的权限,你可以新建一个用户,使它拥有所有的权限,还可以指定从什么地方登陆。权限划分可以很细的,可以精确到table,像select这种简单的查看功能命令都可以限定。具体命令像create,grant等等可以找本书看看。用户访问权限:

mysql.user 全局层级权限(global privileges)

db 数据库层级(database-specific privileges)

tables_priv 表层级(table-secific privileges)

columns_priv列层级(column-secific privileges)

新建用户

create user 'test1'@'localhost/127.0.0.1' identified by '123',

->'test2'@'%' identified by '123'

语法: create user 'user'[@'host'] [identified by [password] 'password']

删除用户

drop user 'test1'@'localhost','test1'@'%','test2'@'localhost'

语法: drop user 'user'@'host'

撤销用户权限

revoke all on *.* from 'test'@'localhost'

更改用户名

rename user 'test'@'localhost' to 'test1'@'%'

用户授权

grant all privileges on *.*/dbname.*/dbname.tablename/ to 'test'@'localhost' identified by '123'

->required ssl with grant option

grant select,update(field1,field2) on dbname.tablename to 'test1'@'%' identified by '123'

->required ssl with grant option

搜索得到一位前辈的解决办法如下:

首先,在连接jdbc驱动的时候,按如下语句:

String connstr ="jdbc:mysql://localhost:3306/tp_db?&useUnicode=true&characterEncoding=8859_1"

然后,输入中文时转换时,按如下语句:

sql=new String(sql.getBytes("iso8859-1"))

最后,输出中文时转换,按如下语句:

String bookname=new String(rs.getString("bookname").getBytes("iso8859-1"),"GBK或者GB2312")

注:查看显示结果应在中文支持的环境下,我的配置为:Linux7.3+Tomcat4.0+Mysql3.22 作服务器端,IE6或Netscape作浏览器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8659451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存