使用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作浏览器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)