Keep on going, never give up.

如何给MySql创建连接用户并授权

一般在为MySql创建用户时建议使用GRANT前台命令,当然如果对我们开发者而言,方法还有很多种,比如使用INSERT命令,甚至是直接修改mysql user数据表,但仍然建议按照MySQL规范去授权账户。因为它太容易忘记,特别整理方便参考。

一、简单授权指令

1、登录MySQL

输入mysql -u root和密码即可登录到Mysql。

2、选择数据表

语句如下:use mysql;

3、在mysql的user表中增加连接用户

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

其中:

“username”替换为将要授权的用户名,比如clientusr;

“password”替换为clientusr设置的密码;

4、可访问数据表授权

创建好帐户之后,就开始给上面的common user进行数据表授权,步骤3中增加的连接用户默认权限都是“N”的,必须在db表中为该帐户授权,允许其访问专用数据库,当然超级用户就不说了。

使用下面语句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON tbx.*  TO 'username'@'localhost' IDENTIFIED BY 'password';

本语句中的权限根据实际需要确定:

"tbx"替换为授权访问的数据表table名

"username"是步骤2授权用户名

"password"是步骤2授权用户的设置密码

这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。

5、生效授权,创建完毕

FLUSH PRIVILEGES;

备注:

1、不要直接使用INSERT语句添加user记录,使用INSERT可能出现:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级MYSQL到5.1的时候,发现可能会出现这个错误。

2、上文3和4,也可使用一句话GRANT ALL ON tbx.* TO 'username' IDENTIFIED BY 'password',这句话会自动创建username并为之授权。更多授权权限可参考MYSQL官方网站。

二、Mysql授权知识

添加账户(可通过GRANT和INSERT方式,推荐前者):
1、登录mysql
shell> mysql --user=root mysql
2.选择数据表
use mysql;
3.user数据库增加:
一般不要直接使用INSERT语句添加user记录,使用INSERT可能出现:
ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
建议使用:
GRANT USAGE ON *.* TO 'tmpusr'@'localhost' IDENTIFIED BY 'newpassword' WITH GRANT OPTION;

4.创建账户,允许其访问专用数据库:k
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON msblog.*  TO 'tmpusr'@'localhost' IDENTIFIED BY 'newpassword';

5.FLUSH PRIVILEGES;

5.创建用户完毕!

偶尔出现requre_once失败问题,把上一级的目录安全属性添加EVERYONE 读写运行属性即可

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
Database changed
mysql> UPDATE `user` SET Password=PASSWORD(`111111`) WHERE User=`root`;
mysql>

使用GRANT来设置四个新账户:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'tommy'@'localhost' IDENTIFIED BY 'newpassword' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tommy'@'%' IDENTIFIED BY 'newpassword' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

用GRANT语句创建的账户有下面的属性:

·其中两个账户有相同的用户名tommy和密码newpassword。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('tommy'@'localhost')只用于

从本机连接时。另一个账户('tommy'@'%')可用于从其它主机连接。
请注意tommy的两个账户必须能从任何主机以tommy连接。没有localhost账户,当tommy从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。

结果是,tommy将被视为匿名用户。原因是匿名用户账户的Host列值比'tommy'@'%'账户更具体,这样在user表排序顺序中排在前面。

除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表:

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','tommy',PASSWORD('newpassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','tommy',PASSWORD('newpassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin', Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

当你用INSERT创建账户时使用FLUSH PRIVILEGES的原因是告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用FLUSH 

PRIVILEGES。

下面的例子创建2个账户,允许它们访问专用数据库。每个账户的用户名为custom,密码为obscure。示例语句:

shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON bank.* TO 'custom'@'localhost' IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON customer.* TO 'custom'@'server.domain' IDENTIFIED BY 'obscure';

这2个账户可以用于:
·第1个账户可以访问bank数据库,但只能从本机访问。
·第2个账户可以访问customer数据库,但只能从主机server.domain访问。

要想不用GRANT设置custom账户,使用INSERT语句直接修改授权表。


从MySQL删除用户账户

DROP USER user [, user] ... 
DROP USER语句用于删除一个或多个MySQL账户。要使用DROP USER,您必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。使用与GRANT或REVOKE相同的格式

为每个账户命名,账户名称的用户和主机部分与用户表记录的User和Host列值相对应。

使用DROP USER,您可以取消一个账户和其权限,操作如下:
DROP USER user; 
该语句可以删除来自所有授权表的帐户权限记录。但DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效

,直到用户对话被关闭后才生效。一旦对话被闭,用户也被取消,此用户再次试图登录时将会失败。这是有意设计的。

更多文章:

修改MySQL连接数MySQL数据类型MySQL系统保留字

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.