怎样添加数据库用户mysql数据库

首先以root身份登录MySQL服务器。
$mysql-uroot-p当出现验证提示时,输入MySQLroot帐户的密码。
创建一个MySQL用户。
使用以下命令分别使用“myuser”和“mypassword”创建用户名和密码。
mysql>CREATEUSER'myuser'@'localhost'IDENTIFIEDBY'mypassword';创建用户后,所有帐户详细信息(包括加密密码、权限和资源限制)都将存储在名为“用户”的表中。
该表存在于一个特殊的数据库MySQL中。
要验证帐户是否已成功创建,请运行以下命令mysql>SELECThost,user,passwordFROMmysql.userWHEREuser='myuser';新创建的MySQL用户没有访问权限,也就是说不能对MySQL数据库进行任何操作。
您必须向用户授予必要的权限。
以下是一些可用权限:ALL:所有可用权限CREATE:创建库、表和索引LOCK_TABLES:锁定表ALTER:修改表DELETE:删除表INSERT:插入表或列SELECT:对于表或列列检索数据CREATE_VIEW:创建视图SHOW_DATABASES:列出数据库DROP:删除库、表和视图运行以下命令向用户“myuser”授予特定权限。
mysql>GRANT<权限>ON<数据库>.<表>TO'myuser'@'localhost';在上面的命令中,表示以逗号分隔的权限列表。
如果要授予对数据库(或表)的权限,请使用星号(*)代替数据库(或表)名称。
例如,向所有数据库/表授予CREATE和INSERT权限:mysql>GRANTCREATE,INSERTON*.*TO'myuser'@'localhost'验证授予用户的完整权限:mysql>SHOWGRANTSFOR'myuser'@'localhost';所有数据库/表均已被授予完全权限:mysql>GRANTALLON*.*TO'myuser'@'localhost';您还可以删除用户的现有权限。
使用以下命令撤销“myuser”帐户现有的权限:mysql>REVOKEON.FROM'myuser'@'localhost';为MySQL中的用户添加资源限制,可以设置MySQL的个人用户资源使用限制。
可用资源限制如下:MAX_QUERIES_PER_HOUR:每小时允许的最大请求数MAX_UPDATES_PER_HOUR:每小时允许的最大更新数MAX_CONNECTIONS_PER_HOUR:每小时允许的最大连接数(LCTT注解:这个和MySQL全局变量:max_user_connections合二为一)确定数据库中的用户数(连接数)数量MAX_USER_CONNECTIONS:服务器的同时连接数使用以下命令向“myuser”帐户添加资源限制:;您可以指定多个以空格分隔的资源限制,例如,要增加MAXQUERIESPERHOUR和MAXCONNECTIONSPERHOUR资源限制:mysql>GRANTUSAGEON*.*TO'myuser'@'localhost'WITHMAX_QUERIES_PER_HOUR30MAX_CONNECTIONS_PER_HOUR6;验证用户的资源限制:mysql>SHOWGRANTSFOR'myuser'@'localhost;创建和设置MySQL用户的最后一个重要步骤:mysql>FLUSHPRIVILEGES;CHANGE那么就会有效果。
MySQL用户帐户现已可供使用。

mysqlshell怎么添加用户

创建新用户CREATEUSERCREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password'][,user[IDENTIFIEDBY[PASSWORD]'password']]...CREATEUSER用于创建新的MySQL帐户。
要使用CREATEUSER,您必须具有mysql数据库的全局CREATEUSER权限或INSERT权限。
对于每个帐户,CREATEUSER都会在mysql.user表中创建一条没有权限的新记录。
如果该帐户已存在,则会发生错误。
通过使用可选的IDENTIFIEDBY子句,您可以为您的帐户提供密码。
用户值和密码的提供方式与GRANT语句相同。
特别是,要以纯文本形式指定密码,请忽略PASSWORD关键字。
要将密码指定为PASSWORD()函数返回的哈希值,请包含PASSWORD关键字。
另外:您可以通过两种方式创建MySQL帐户:·使用GRANT语句·直接对MySQL授权表进行操作最好的方法是使用GRANT语句,因为它更精确且错误更少。
GRANT从MySQL3.22.11开始提供,创建帐户的另一种方法是使用具有MySQL帐户管理功能的第三方程序。
phpMyAdmin是一个程序。
以下示例演示如何使用MySQL客户端程序设置新用户。
这意味着要进行更改,您必须以MySQLroot用户身份连接到MySQL服务器,并且root帐户必须对mysql数据库具有管理INSERT和RELOAD权限。
首先,使用MySQL程序以MySQLroot用户身份连接到服务器:shell>MySQL--user=rootMySQL如果为root帐户指定密码,则还必须为此MySQL提供--password或-p选项命令和本节中的其他命令。
以root身份连接到服务器后,您可以添加新帐户。
以下语句使用GRANT设置四个新帐户:mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'localhost'->IDENTIFIEDBY'some_pass'WITHGRANTOPTION;mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'%'->像这样识别me_pass'WITHGRANTOPTION;mysql>GRANTRELOAD,PROCESSON*.*TO'admin'@'localhost';mysql>GRANTUSAGEON*.*TO'dummy'@'localhost';用GRANT语句创建的帐户有以下属性:·两个这些帐户中有相同的用户名monty和相同的密码some_pass。
这两个帐户都是超级用户帐户,具有执行任何操作的完全权限。
仅当从本地计算机连接时才使用帐户(“monty”@“localhost”)。
另一个帐户('monty'@'%')可用于从其他主机进行连接。
请注意,两个monty帐户必须能够从任何主机连接到monty。
如果没有localhost帐户,当monty从该计算机连接时,由mysql_install_db创建的localhost匿名用户帐户将优先。
因此,Monty将被视为匿名用户。
原因是匿名用户帐户的Host列值比'monty'@'%'帐户更具体,因此在用户表排序中排名靠前。
·帐户的用户名是admin,没有密码。
该帐户仅用于从本机连接。
已授予RELOAD和PROCESS管理权限。
这些权限允许管理员用户运行mysqladminreload、mysqladminrefresh和mysqladminflush-xxx命令以及mysqladminprocesslist。
未授予访问数据库的权限。
您可以使用GRANT语句添加这些权限。
·帐户具有虚构的用户名且没有密码。
该帐户仅用于从本机连接。
未授予授权。
和GRANT语句中的USAGE权限,无需授予任何权限即可创建帐户。
可以将所有全局权限设置为“N”。
假设您稍后将向该帐户授予特定权限。
除了GRANT之外,还可以直接使用INSERT语句创建相同的帐户,然后使用FLUSHPRIVILEGES告诉服务器重新加载授权表:shell>mysql--user=rootmysqlmysql>INSERTINTOuser->VALUES('localhost','monty',PASSWORD('some_pass'),->'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql>userINSERT->值('%','monty',PASSWORD('some_pass'),->'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql>INSERTINTOuserSETHost='localhost',User='admin',->Reload_priv='Y',Process_priv='Y';mysql>INSERTINTOuser(主机,User,Password)->VALUES('localhost','dummy','');mysql>FLUSHPRIVILEGES;使用INSERT创建帐户时使用FLUSHPRIVILEGES的原因是告诉服务器重新读取权限表。
否则,直到服务器重新启动后才会注意到更改。
使用GRANT时,不需要使用FLUSHPRIVILEGES。
使用PASSWORD()函数和INSERT来加密密码。
GRANT语句会为您加密密码,因此不需要PASSWORD()。
值“Y”启用帐户权限。
对于管理员帐户,您还可以使用更具可读性的扩展INSERT语法(使用SET)。
在虚构帐户的INSERT语句中,仅将用户表中的Host、User和Password列记录为指定值。
没有显式设置权限列,因此MySQL将它们全部分配给默认值“N”。
这与GRANTUSAGE的工作原理相同。
请注意,要设置超级用户帐户,您只需在用户表中创建一个条目,并将权限列设置为“Y”。
用户表权限是全局权限,因此不需要其他权限表中的条目。
以下示例创建3个帐户并允许他们访问私有数据库。
每个帐户的用户名都是个性化的,密码也是晦涩难懂的。
要使用GRANT创建帐户,请使用以下语句:shell>MySQL--user=rootMySQLshell>mysql--user=rootmysqlmysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP->ONbankaccount.*->TO'custom'@'localhost'->IDENTIFIEDBY'obscure';mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP->ONexpenses。
*->TO'custom'@'whitehouse.gov'->IDENTIFIEDBY'obscure';mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATETE,DROP->ONcustomer。
*->TO'custom'@'server.domain'->IDENTIFIEDBY'obscure'这3个帐户可用于:·第一个帐户可以访问帐户数据库银行业务,但只能从此帐户访问机器。
·第二个帐户可以访问费用数据库,但只能从whitehouse.gov主机访问。
·第三个帐户可以访问客户数据库,但只能从host.domain服务器访问。
要设置没有GRANT的自定义帐户,请使用INSERT语句直接修改权限表:shell>mysql--user=rootmysqlmysql>INSERTINTOuser(Host,User,Password)->VALUES('localhost','custom',PASSWORD('obscure'));mysql>INSERTINTOuser(主机,用户,密码)->VALUES('whitehouse.gov','custom',PASSWORD('obscure'));mysql>INSERTINTUser(主机、用户、密码)->VALUES('server.domain','custom',PASSWORD('obscure'));mysql>INSERTINTOdb->(Host,Db,User,Select_priv,Insert_priv,->Update_priv,Delete_priv,Create_priv,Drop_priv)->VALUES('本地主机','银行帐户','custom',->'Y','Y','Y','Y','Y','Y');mysql>INSERTINTOdb->(主机,Db,用户,Select_priv,Insert_priv,->Update_priv,Delete_priv.,Creat_priv,Drop_priv)->VALUES('whitehouse.gov','expenses','custom',->'Y','Y','Y','Y','Y','Y');mysql>INSERTDB->(主机,数据库,用户、Select_priv、Insert_priv、->Update_priv、Delete_priv、Create_priv、Drop_priv)->VALUES('server.domain','customer','custom',->'Y','Y','Y','Y','Y','Y');mysql>FLUSHPRIVILEGES;前3条INSERT语句向用户表添加条目,允许用户自定义来自各个主机的数据使用提供的密码进行连接,但不授予全局权限(所有权限都设置为默认值“N”)。
接下来的三个INSERT语句将条目添加到用户表中,授予银行帐户、费用和客户数据库的自定义权限,但只能从适当的主机进行访问。
通常,如果直接修改权限表,则需要告诉服务器使用FLUSHPRIVILEGES重新加载权限表以使权限更改生效。
如果要授予用户访问特定域(例如mydomain.com)中所有计算机的权限,可以使用GRANT并在帐户名的主机部分中添加“%”通配符。
短语:mysql>GRANT...->ON*.*->TO'myname'@'%.mydomain.com'->IDENTIFIEDBY'mypass';要通过直接修改授权表来实现此目的:mysql>INSERTINTOuser(Host,User,Password,...)->VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...);mysql>FLUSHPRIVILEGES;设置账户密码可以使用mysqladmin命令在命令行指定密码:shell>mysqladmin-user_name-hhost_namepassword"newpwd"。
重置用户表中的帐户密码。
将“用户”列中的“user_name”与“主机”列中您发起连接的客户端的记录相匹配。
为帐户分配密码的另一种方法是运行SETPASSWORD语句:mysql>SETPASSWORDFOR'jeffrey'@'%'=PASSWORD('biscuit');只有像root这样可以更新mysql数据库的用户才能更改其他用户的密码。
如果您不是以匿名用户身份连接,则可以通过省略FOR子句来更改密码:mysql>SETPASSWORD=PASSWORD('biscuit');您还可以使用GRANTUSAGE语句(在*.*中)全局指定帐户密码,而不影响帐户当前权限:mysql>GRANTUSAGEON*.*TO'jeffrey'@'%'IDENTIFIEDBY'biscuit';一般来说,最好使用上述方法来指定密码。
您还可以直接编辑用户表:要在创建新帐户时建立密码,请在密码列​​中提供一个值:shell>mysql-urootmysql·mysql>INSERTINTOuser(Host,User,Password)·->VALUES('%','jeffrey',PASSWORD('biscuit'));·mysql>FLUSHPRIVILEGES;··更改密码现有帐户,使用UPDATE设置密码列的值:shell>mysql-urootmysqlmysql>UPDATEuserSETPassword=PASSWORD('bagel')->WHEREHost='%'ANDUser='francis';mysql>FLUSHPRIVILEGES;当您使用SETPASSWORD、INSERT或UPDATE要指定帐户密码,您必须使用PASSWORD()函数更改其加密。
(唯一的例外是,如果密码为空,则不需要使用PASSWORD())。
您必须使用PASSWORD(),因为用户表以加密形式存储密码,而不是以纯文本形式。
如果忘记了,可以这样设置密码:shell>mysql-urootmysqlmysql>INSERTINTOuser(Host,User,Password)->VALUES('%','jeffrey','biscuit');mysql>FLUSHPRIVILEGES;结果is“cookie”密码保存到用户表后没有加密。
当Jeffrey使用此密码连接到服务器时,该值会被加密并与用户表中存储的值进行比较。
但是,保存的值是字符串“biscuit”,因此比较将失败并且服务器将拒绝连接:shell>mysql-ujeffrey-pbiscuittestAccessdenied如果使用GRANT...IDENTIFIEDBY语句或mysqladminpassword命令设置密码,两者都对密码进行加密。
在这种情况下,没有必要使用PASSWORD()函数。
2.创建数据库mysql>createddatabase****3.授予权限GRANTALLPRIVILEGESON数据库名.*TO'用户名'@'%';