失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql用户主机设置密码_MySQL用户账号管理(添加 删除 限制 设置密码 远程访问)...

mysql用户主机设置密码_MySQL用户账号管理(添加 删除 限制 设置密码 远程访问)...

时间:2023-10-29 23:39:36

相关推荐

mysql用户主机设置密码_MySQL用户账号管理(添加 删除 限制 设置密码 远程访问)...

1.添加MySQL账户

mysql> GRANT ALL PRIVILEGES ON *.* TO

‘www’@'localhost’IDENTIFIED BY ’123456′ WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘www’@'%’IDENTIFIED

BY ’123456′ WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO

‘admin’@'localhost’;

mysql> GRANT USAGE ON *.* TO ‘dummy’@'localhost’;

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

前两个账户有相同的用户名www和密码123456。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户

(‘www’@'localhost’)只用于从本机连接时。另一个账户(‘www’@'%’)可用于从其它主机连接。请注意www的两个账户必须能从任何主机以www连接。没有localhost账户,当www从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,www将被视为匿名用户。原因是匿名用户账户的Host列值比’www’@'%’账户更具体,这样在user表排序顺序中排在前面。

一个账户有用户名admin,没有密码。该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin

reload、mysqladmin refresh和mysqladmin flush-xxx命令,以及mysqladmin

processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。

一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为’N'。假定你将在以后将具体权限授予该账户。

2.从MySQL删除用户账户

要想移除账户,应使用DROP USER语句:

DROP USER user [, user] …

3.限制账户资源

要想用GRANT语句设置资源限制,使WITH子句来命名每个要限制的资源和根据每小时记数的限制值。例如,要想只以限制方式创建可以访问customer数据库的新账户,执行该语句:

mysql> GRANT ALL ON customer.* TO

‘francis’@'localhost’

-> IDENTIFIED BY ‘frank’

-> WITH MAX_QUERIES_PER_HOUR 20

-> MAX_UPDATES_PER_HOUR 10

-> MAX_CONNECTIONS_PER_HOUR 5

-> MAX_USER_CONNECTIONS 2;

要想设置或更改已有账户的限制,在全局级别使用GRANT

USAGE语句(在*.*)。下面的语句可以将keer的查询限制更改为200:

mysql> GRANT USAGE ON *.* TO ‘keer’@'localhost’ WITH

MAX_QUERIES_PER_HOUR 200;

该语句没有改变账户的已有权限,只修改了指定的限制值。

要想取消已有限制,将该值设置为零。例如,要想取消keer每小时可以连接的次数的限制,使用该语句:

mysql> GRANT USAGE ON *.* TO ‘keer’@'localhost’ WITH

MAX_CONNECTIONS_PER_HOUR 0;

当账户使用资源时如果有非零限制,则对资源使用进行记数。

4.设置账户密码

可以用mysqladmin命令在命令行指定密码:

shell> mysqladmin -u username -h hostname password

“yourpassword”

该命令重设密码的账户为user表内匹配User列的username和Host列你发起连接的客户端的记录。

为账户赋予密码的另一种方法是执行SET PASSWORD语句:

mysql> SET PASSWORD FOR ‘www’@'%’ =

PASSWORD(’123456′);

只有root等可以更新mysql数据库的用户可以更改其它用户的密码。如果你没有以匿名用户连接,省略FOR子句便可以更改自己的密码:

mysql> SET PASSWORD = PASSWORD(’123456′);

你还可以在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码而不影响账户当前的权限:

mysql> GRANT USAGE ON *.* TO ‘www’@'%’ IDENTIFIED BY

’123456′;

一般情况下最好使用上述方法来指定密码,你还可以直接修改user表:

要想在创建新账户时建立密码,在Password列提供一个值:

shell> mysql -u root mysql

mysql> INSERT INTO user (Host,User,Password)

VALUES(‘%’,'www’,PASSWORD(’123456′));

mysql> FLUSH PRIVILEGES;

要想更改已有账户的密码,使用UPDATE来设置Password列值:

shell> mysql -u root mysql

mysql> UPDATE user SET Password = PASSWORD(’123456′) WHERE

Host = ‘%’ AND User = ‘www’;

mysql> FLUSH PRIVILEGES;

当你使用SET

PASSWORD、INSERT或UPDATE指定账户的密码时,必须用PASSWORD()函数对它进行加密。(唯一的特例是如果密码为空,你不需要使用PASSWORD())。需要使用PASSWORD()是因为user表以加密方式保存密码,而不是明文。如果你忘记了,你可能会象这样设置密码:

shell> mysql -u root mysql

mysql> INSERT INTO user (Host,User,Password)

VALUES(‘%’,'www’,’123456′);

mysql> FLUSH PRIVILEGES;

结果是密码’123456′保存到user表后没有加密。当www使用该密码连接服务器时,值被加密并同保存在user表中的进行比较。但是,保存的值为字符串’123456′,因此比较将失败,服务器拒绝连接:

shell> mysql -u www -p 123456 test

Access denied

当然你使用GRANT … IDENTIFIED BY语句或mysqladmin

password命令设置密码,它们均会加密密码。在这种情况下,不需要使用 PASSWORD()函数。

5.设置账号远程访问

有些时候创建的数据库账号都是针对数据库服务器本地的,在集群中mysql数据库是共用的,那就需要给出一个账号能够让集群中的其他服务器远程访问,具体操作如下

mysql> use mysql;

mysql> GRANT ALL ON *.* TO www@’%’ IDENTIFIED BY ’123456′

WITH GRANT OPTION;

#注解:允许任何IP地址的主机用【www】帐户和密码【123456】来访问这个MySQL Server

#必须加类似这样的帐户,才可以远程登陆。root帐户是无法远程登陆的,只可以localhost登陆

测试使用下面命令即可

mysql -h *.*.*.* -u www -p 123456

在测试的发现了一个问题

mysql -h localhost -u www -p 123456

如下命令我在本地用localhost访问是失败的,google之后才发现原来上面的’%'居然不包括localhost的,所以为了本地也能方位数据库需要再加上下面一句

mysql> GRANT ALL ON *.* TO www@’localhost’ IDENTIFIED BY

’123456′ WITH GRANT OPTION;

okay,测试通过

如果觉得《mysql用户主机设置密码_MySQL用户账号管理(添加 删除 限制 设置密码 远程访问)...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。