添加用户有两种不同的方式:使用GRANT语句或者直接操作mysql授权表。更好的方法是使用GRANT语句,因为它们更简洁,似乎错误更少。
以下示例显示了如何使用MySQL客户安装新用户。这些示例假定权限是默认安装的。这意味着,为了进行更改,您必须在运行MySQL的同一台计算机上,您必须以MySQL root用户的身份进行连接,并且root用户必须拥有对MySQL数据库的insert权限和reload管理权限。此外,如果您更改root密码,您必须使用以下MySQL命令指定它。
您可以通过发出GRANT语句来添加新用户:
shell mysql - user=root mysql
mysql授予*上的所有权限。*到monty@localhost
由带有授予选项的“某物”标识;
mysql授予*上的所有权限。*给蒙蒂@'% '
由带有授予选项的“某物”标识;
mysql授权重新加载,在*上处理。*到admin @ localhost
*上的mysql授权使用。* TO dummy @ localhost
这些授权声明安装了3个新用户:
Monty:一个完全的超级用户,可以从任何地方连接到服务器,但是必须使用密码(“某个东西”)才能做到。注意,我们必须向monty@localhost和monty@'% '发出GRANT语句。如果我们添加localhost条目,当我们从本地主机连接时由mysql_install_db创建的localHost的匿名用户条目将被赋予优先权,因为它具有更具体的主机字段值,所以它在用户表的顺序中排在前面。
Admin:无需密码即可从本地主机连接的用户,被授予重新加载和处理的管理权限。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,以及mysqladmin processlist。没有授予任何与数据库相关的权限。他们可以稍后通过发布另一个GRANT语句来授权它。
Dummy:不需要密码就可以连接的用户,但只能从本地主机连接。全局权限设置为“n”-使用权限类型允许您设置没有权限的用户。它假设您将来会授予与数据库相关的权限。
您还可以通过发出INSERT语句直接添加相同的用户访问信息,然后告诉服务器再次加载授权表:
shell mysql - user=root mysql
mysql插入用户值(' localhost '' monty '密码(' something '),
' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y ')
mysql插入到用户值(' % '' monty '密码(' something '),
' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y '' Y ')
mysql插入用户集Host='localhost 'User='admin '
Reload_priv='Y 'Process _ priv=' Y
mysql插入用户(主机、用户、密码)
值(' localhost '' dummy '' ');
mysql FLUSH特权;
根据您的MySQL版本,您可能需要为上述内容使用不同数量的“y”值(3.22.11之前的版本权限列较少)。对于管理员用户,只使用从3.22.11开始版本的可读性更强的插入扩展语法。
请注意,为了设置超级用户,您只需要创建一个用户表条目,并将其权限字段设置为“y”。不需要数据库或主机表的条目。
用户表中的权限列不是由最后一个INSERT语句显式设置的(对于虚拟用户),因此这些列被赋予默认值‘n’。这和GRANT USAGE做的事情是一样的。
以下示例添加一个用户自定义,该用户可以从主机localhost、server.domain和whitehouse.gov进行连接。他只想从本地主机访问bankaccount数据库,从whitehouse.gov主机访问expenses数据库,从所有三台主机访问customer数据库。他想使用所有三台主机的密码存根。
要使用GRANT语句为用户设置权限,请运行以下命令:
shell mysql - user=root
mysql mysql GRANT选择、插入、更新、删除、创建、删除
在银行账户上。*
到custom@localhost
用‘笨’来标识;
mysql授权选择、插入、更新、删除、创建、删除
关于费用。*
去custom@whitehouse.gov
用‘笨’来标识;
mysql授权选择、插入、更新、删除、创建、删除
在客户身上。*
自定义@'% '
用‘笨’来标识;
通过直接修改授权表来设置用户权限,并运行以下命令(注意,最后是刷新权限):
shell mysql - user=root
mysql mysql插入用户(主机、用户、密码)
值(' localhost '' custom 'PASSWORD('愚蠢'));
关系型数据库插入用户(主机、用户、密码)
值(' server.domain '' custom 'PASSWORD('愚蠢'));
关系型数据库插入用户(主机、用户、密码)
值(' whitehouse.gov ''自定义'密码('愚蠢');
关系型数据库插入数据库
(主机,数据库,用户,选择权限,插入权限,更新权限,删除权限,
Create_priv,Drop_priv)
价值观念
(' localhost '' bankaccount '' custom '' Y '' Y '' Y '' Y ');
关系型数据库插入数据库
(主机,数据库,用户,选择权限,插入权限,更新权限,删除权限,
Create_priv,Drop_priv)
价值观念
(' whitehouse.gov ''费用''风俗'' Y '' Y '' Y '' Y ');
关系型数据库插入数据库
(主机,数据库,用户,选择权限,插入权限,更新权限,删除权限,
Create_priv,Drop_priv)
值(' % ''客户''自定义、‘Y’、‘Y’、‘Y’、‘Y’);
mysql同花顺特权;
头3个插入语句增加用户表条目,允许用户习俗用给定口令从不同的主机进行连接,但是没有授予任何许可(所有权限被设置为缺省值n’)。后3个插入语句增加表条目,授予习俗以银行账户、费用和顾客数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装入他们(用刷新权限)以便使权限修改生效。如果你想要给特定的用户从一个给定的域上的任何机器上存取权限,你可以发出一个如下的同意语句:
关系型数据库授权.
在*。*
到我的用户名@'%.mydomainname.com '
由"我的密码"标识;
为了通过直接修改授权表做同样的事情,这样做:
mysql插入到用户值(" %.mydomainname.com "," myusername ",
密码('我的密码'),);
mysql同花顺特权;
你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授权表中插入、改变和更新值。你可以在关系型数据库的贡献目录找到这些实用程序。