共计 4395 个字符,预计需要花费 11 分钟才能阅读完成。
这期内容当中丸趣 TV 小编将会给大家带来有关 Mysql 中怎么创建用户帐户,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1.CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] password ]
[, user [IDENTIFIED BY [PASSWORD] password ]] …
CREATE USER 用于创建新的 MySQL 账户。要使用 CREATE USER,您必须拥有 mysql 数据库的全局 CREATE USER 权限,或拥有 INSERT 权限。对于每个账户,CREATE USER 会在没有权限的 mysql.user 表中创建一个新记录。如果 账户已经存在,则出现错误。
使用自选的 IDENTIFIED BY 子句,可以为账户给定一个密码。user 值和 密码的给定方法和 GRANT 语句一样。特别是,要在纯文本中指定密码,需忽略 PASSWORD 关键词。要把 密码指定为由 PASSWORD()函数返回的混编值,需包含关键字 PASSWORD。
2. 使用 GRANT 语句
最好的方法是使用 GRANT 语句,因为这样更精确,错误少。从 MySQL 3.22.11 起提供了 GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。注意:当 mysql 运行于 no_auto_create_user 时要提供新建用户的密码,否则不能创新用户。
下面的示例说明如何使用 MySQL 客户端程序来设置新用户。
首先,使用 MySQL 程序以 MySQL root 用户来连接服务器:
shell MySQL –user=root MySQL
如果你为 root 账户指定了密码,还需要为该 MySQL 命令和本节中的其它命令提供 –password 或 - p 选项。
以 root 连接到服务器上后,可以添加新账户。下面的语句使用 GRANT 来设置四个新账户:
mysql GRANT ALL PRIVILEGES ON *.* TO
– IDENTIFIED BY some_pass WITH GRANT OPTION;
mysql GRANT ALL PRIVILEGES ON *.* TO
– IDENTIFIED BY some_pass WITH GRANT OPTION;
mysql GRANT RELOAD,PROCESS ON *.* TO ;
mysql GRANT USAGE ON *.* TO ;
用 GRANT 语句创建的账户有下面的属性:
middot; 其中两个账户有相同的用户名 monty 和密码 some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ()只用于从本机连接时。另一个账户 () 可用于从其它主机连接。请注意 monty 的两个账户必须能从任何主机以 monty 连接。没有 localhost 账户,当 monty 从本机连接时,mysql_install_db 创建的 localhost 的匿名用户账户将占先。结果是,monty 将被视为匿名用户。原因是匿名用户账户的 Host 列值比账户更具体,这样在 user 表排序顺序中排在前面。(user 表排序的讨论要参考 mysql 手册)。
middot; 一个账户有用户名 admin,没有密码。该账户只用于从本机连接。授予了 RELOAD 和 PROCESS 管理权限。这些权限允许 admin 用户执行 mysqladmin reload、mysqladmin refresh 和 mysqladmin flush-xxx 命令,以及 mysqladmin processlist。未授予访问数据库的权限。你可以通过 GRANT 语句添加此类权限。
middot; 一个账户有用户名 dummy,没有密码。该账户只用于从本机连接。未授予权限。通过 GRANT 语句中的 USAGE 权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为 N。假定你将在以后将具体权限授予该账户。
3. 直接操作 MySQL 授权表
除了 GRANT,你可以直接用 INSERT 语句创建相同的账户,然后使用 FLUSH PRIVILEGES 告诉服务器重载授权表。
shell mysql –user=root mysql
mysql INSERT INTO user
– VALUES(localhost , monty ,PASSWORD( some_pass),
– Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y
mysql INSERT INTO user
– VALUES(% , monty ,PASSWORD( some_pass),
– 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。
用 INSERT 使用 PASSWORD()函数是为了加密密码。GRANT 语句为你加密密码,因此不需要 PASSWORD()。
Y 值启用账户权限。对于 admin 账户,还可以使用更加可读的 INSERT 扩充的语法(使用 SET)。
在为 dummy 账户的 INSERT 语句中,只有 user 表中的 Host、User 和 Password 列记录为指定的值。没有一个权限列为显式设置,因此 MySQL 将它们均指定为 默认值 N。这样等同于 GRANT USAGE 的操作。
请注意要设置超级用户账户,只需要创建一个权限列设置为 Y 的 user 表条目。user 表权限为全局权限,因此其它 授权表不再需要条目。
4. 举几个应用 grant 创建帐户和授权的例子
下面的例子创建 3 个账户,允许它们访问专用数据库。每个账户的用户名为 custom,密码为 obscure。
要想用 GRANT 创建账户,使用下面的语句:
shell MySQL –user=root MySQL
shell mysql –user=root mysql
mysql GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
– ON bankaccount.*
– TO
– IDENTIFIED BY obscure
mysql GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
– ON expenses.*
– TO
– IDENTIFIED BY obscure
mysql GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
– ON customer.*
– TO
– IDENTIFIED BY obscure
这 3 个账户可以用于:
middot; 第 1 个账户可以访问 bankaccount 数据库,但只能从本机访问。
middot; 第 2 个账户可以访问 expenses 数据库,但只能从主机 whitehouse.gov 访问。
middot; 第 3 个账户可以访问 customer 数据库,但只能从主机 server.domain 访问。
要想不用 GRANT 设置 custom 账户,使用 INSERT 语句直接修改 授权表:
shell mysql –user=root mysql
mysql INSERT INTO user (Host,User,Password)
– VALUES(localhost , custom ,PASSWORD( obscure
mysql INSERT INTO user (Host,User,Password)
– VALUES(whitehouse.gov , custom ,PASSWORD( obscure
mysql INSERT INTO user (Host,User,Password)
– VALUES(server.domain , custom ,PASSWORD( obscure
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(whitehouse.gov , 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(server.domain , customer , custom ,
– Y , Y , Y , Y , Y , Y
mysql FLUSH PRIVILEGES;
前 3 个 INSERT 语句在 user 表中加入条目,允许用户 custom 从各种主机用给定的密码进行连接,但不授予全局权限(所有权限设置为 默认值 N)。后面 3 个 INSERT 语句在 user 表中加入条目,为 custom 授予 bankaccount、expenses 和 customer 数据库权限,但只能从合适的主机访问。通常若直接修改 授权表,则应告诉服务器用 FLUSH PRIVILEGES 重载授权表,使权限更改生效。
如果你想要让某个用户从给定域的所有机器访问(例如,mydomain.com),你可以在账户名的主机部分使用含 % 通配符的 GRANT 语句:
mysql GRANT …
– ON *.*
– TO
– IDENTIFIED BY mypass
要想通过直接修改授权表来实现:
mysql INSERT INTO user (Host,User,Password,…)
– VALUES(%.mydomain.com , myname ,PASSWORD( mypass),…);
mysql FLUSH PRIVILEGES;
5. 创建账户的其它方法是使用 MySQL 账户管理功能的第三方程序。MyAdmin 即是一个程序。
从 MySQL 删除用户账户
要想移除账户,应使用 DROP USER 语句。
上述就是丸趣 TV 小编为大家分享的 Mysql 中怎么创建用户帐户了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。