mysql添加⽤户的语句_MySQL添加⽤户的两种⽅法
MySQL添加⽤户的两种⽅法
你可以通过发出GRANT语句增加新⽤户:
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
这些GRANT语句安装3个新⽤户:
monty:可以从任何地⽅连接服务器的⼀个完全的超级⽤户,但是必须使⽤⼀个⼝令('something'做这个。注意,我们必须对
monty@localhost和monty@"%"发出GRANT语句。如果我们增加localhost条⽬,对localhost的匿名⽤户条⽬在我们从本地主机连接接时由mysql_install_db创建的条⽬将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
admin:可以从localhost没有⼀个⼝令进⾏连接并且被授予reload和process管理权限的⽤户。这允许⽤户执⾏mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另⼀个GRANT语句授权。
dummy:可以不⽤⼀个⼝令连接的⼀个⽤户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你⽆需权限就可设置⼀个⽤户。它假定你将在以后授予数据库相关的权限。
你也可以直接通过发出INSERT语句增加同样的⽤户存取信息,然后告诉服务器再次装⼊授权表:
shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),
'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;
取决于你的MySQL版本,对上述,你可能必须使⽤⼀个不同数⽬'Y'值(在3.22.11以前的版本有更少的权限列)。对admin⽤户,只⽤在
3.22.11开始的版本具有的更加可读的INSERT扩充的语法。
注意,为了设置⼀个超级⽤户,你只需创造⼀个user表条⽬,其权限字段设为'Y'。不需要db或host表的条⽬。
在user表中的权限列不是由最后⼀个INSERT语句明确设置的(对dummy⽤户),因此那些列被赋予缺省值'N'。这是GRANT USAGE做的同样的事情。
下列例⼦增加⼀个⽤户custom,他能从主机 localhost、server.domain和v连接。他只想要从localhost存取bankaccount数据库,从v存取expenses数据库和从所有3台主机存取customer数据库。他想要从所有3台主机上使⽤⼝令stupid。
为了使⽤GRANT语句设置个⽤户的权限,运⾏这些命令:
shell> mysql --user=root
mysql mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON bankaccount.*
TO custom@localhost
IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON expenses.*
TO v
IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON customer.*
TO custom@'%'
IDENTIFIED BY 'stupid';
通过直接修改授权表设置⽤户权限,运⾏这些命令(注意,在结束时FLUSH PRIVILEGES):
shell> mysql --user=root
mysql mysql> INSERT INTO user (Host,User,Password)
VALUES('localhost','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
VALUES('v','custom',PASSWORD('stupid'));
insert语句字段顺序mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES
('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES
('v','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
头3个INSERT语句增加user表条⽬,允许⽤户 custom⽤给定⼝令从不同的主机进⾏连接,但是没有授予任何许可(所有权限被设置为缺省值'N')。后3个INSERT语句增加db表条⽬,授予 custom以bankaccount、expenses和customer数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装⼊他们(⽤FLUSH PRIVILEGES)以便使权限修改⽣效。 如果你想要给特定的⽤户从⼀个给定的域上的任何机器上存取权限,你可以发出⼀个如下的GRANT语句:
mysql> GRANT ...
ON *.*
TO myusername@"%.mydomainname"
IDENTIFIED BY 'mypassword';
为了通过直接修改授权表做同样的事情,这样做:
mysql> INSERT INTO user VALUES ('%.mydomainname', 'myusername',
PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;
你也可以使⽤xmysqladmin、mysql_webadmin甚⾄xmysql在授权表中插⼊、改变和更新值。你可以在MySQL的Contrib⽬录到这些实⽤程序。
通过上⽂中在MySQL中添加⽤户两种⽅法的学习,相信现在在MySQL中添加⽤户的问题⼤家已经都学会了,很⾼兴与⼤家分享这些⼩经验,希望能够对⼤家有所帮助。
【编辑推荐】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论