如何解决mysql中的账户添加后不能登录的问题
2008-07-23 06:52
561 查看
最近帮朋友升级一个php的项目,mysql数据库的版本是5.0.4.1,但是在添加一个账户后却发现用这个账户无法登录mysql。以前也用过mysql数据库(那时还是mysql3),可这样的问题还是头一次遇到。我想在开发过程中遇到这类问题的人一定不在少数,那么我们就从这次出现的问题出发来一起研究一下mysql数据库的账户添加问题。
先通过控制台添加一个账户:
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> '','','','',0,0,0,0);
然后,建立php程序进行登录
<html><body><h1>It works!</h1>
<?php
$link = mysql_connect('localhost', 'monty', 'some_pass');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
</body></html>
但是,运行后的结果却是:
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> '','','','',0,0,0,0);
mysql> FLUSH PRIVILEGES;
再运行刚才的php程序,正确的结果就出现了:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
前两个帐户名称都是monty,而且都是拥有所有权限和密码。但是两者的区别在于,第一个帐户(monty@localhost)只能通过本地登录,而第二个账户(monty@%)可以通过任意主机登录。值得注意的是,为了能够使用monty帐户在任何地方进行登录,这两个账户同时存在则是必要的。因为,如果没有本地帐户(monty@localhost),使用monty帐户登录时,mysql_install_db将优先考虑创建一个本地的匿名帐户。那么结果将是monty账户会被当作一个匿名帐户来处理。原因则在于,匿名帐户拥有一个比nonty@%账户更加具体的host字段值,从而在user表排序的时候会相对出现的更早。
上面这个表中的admin帐号则只拥有reload和process权限且没有密码,这些权限允许该帐户执行mysqladmin reload, mysqladmin refresh,mysqladmin processlist和mysqladmin flush-
dummy帐号没有密码也没有任何权限,它只被允许从本地(localhost)登录mysql。GRANT命令允许使用USAGE来创建一个帐号却不赋予任何权限。
如果你的Mysql采用的是
以上就是mysql用来进行帐户添加的两种主要方式,如果你在开发的过程中也遇到类似的问题,相信你用这两种方法就可以解决了。
先通过控制台添加一个账户:
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> '','','','',0,0,0,0);
然后,建立php程序进行登录
<html><body><h1>It works!</h1>
<?php
$link = mysql_connect('localhost', 'monty', 'some_pass');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
</body></html>
但是,运行后的结果却是:
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> '','','','',0,0,0,0);
mysql> FLUSH PRIVILEGES;
再运行刚才的php程序,正确的结果就出现了:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
前两个帐户名称都是monty,而且都是拥有所有权限和密码。但是两者的区别在于,第一个帐户(monty@localhost)只能通过本地登录,而第二个账户(monty@%)可以通过任意主机登录。值得注意的是,为了能够使用monty帐户在任何地方进行登录,这两个账户同时存在则是必要的。因为,如果没有本地帐户(monty@localhost),使用monty帐户登录时,mysql_install_db将优先考虑创建一个本地的匿名帐户。那么结果将是monty账户会被当作一个匿名帐户来处理。原因则在于,匿名帐户拥有一个比nonty@%账户更加具体的host字段值,从而在user表排序的时候会相对出现的更早。
上面这个表中的admin帐号则只拥有reload和process权限且没有密码,这些权限允许该帐户执行mysqladmin reload, mysqladmin refresh,mysqladmin processlist和mysqladmin flush-
xxx系列命令,但是没有权限进入任何数据库。
dummy帐号没有密码也没有任何权限,它只被允许从本地(localhost)登录mysql。GRANT命令允许使用USAGE来创建一个帐号却不赋予任何权限。
如果你的Mysql采用的是
NO_AUTO_CREATE_USER模式,那么通过命令行模式建立一个没有密码的帐号将会失败。为了解决这个问题,你可以使用IDENTIFIED BY来指定具体的密码。
以上就是mysql用来进行帐户添加的两种主要方式,如果你在开发的过程中也遇到类似的问题,相信你用这两种方法就可以解决了。
相关文章推荐
- 如何解决Xmanager不能登录Linux系统问题
- 关于mac系统上 mysql重置密码(解决密码错误不能登录Sequel Pro的问题)
- 如何解决fedora 13中root用户不能登录的问题
- 网站后台不能添加图片,如果是服务器权限问题,应该如何解决?方法如下
- 解决Mysql 安装完不能登录的问题
- 如何解决Visual c++不能打开文件以及工程不能添加文件的问题(转)
- MSSQL 2008不能用IP登录问题如何解决_Mssql数据
- 【转载】解决不能添加GOOGLE账户的问题!(付安装教程)
- 解决Mysql密码修改后不能登录的问题
- 如何解决VS2012中listbox不能添加水平滚动条的问题
- 如何解决fedora 13中root用户不能登录的问题
- 【转载】解决不能添加GOOGLE账户的问题!(付安装教程)
- 如何解决fedora 13中root用户不能登录的问题
- 看看如何解决“SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题
- 如何解决fedora 13中root用户不能登录的问题
- CAS不能使用中文账户登录问题的解决
- MySQl使用-------如何修改root密码&&解决本地无法登录问题
- 如何解决安装VMware后郑广电宽带客户端不能登录的问题?
- 如何解决fedora 13中root用户不能登录的问题
- MSSQL 2008不能用IP登录问题如何解决