MySQL中文参考手册7(MySQL存取权限系统)grant设置密码password
来源:互联网 作者: 出处:综艺读书 2007-07-18 6.13 Access denied错误的原因
更多内容请看 Cisco密码恢复专题 MySQL专题,或进入讨论组讨论。
|
|
|||
- 当你试着联接MySQL服务器时,如果你碰到Access denied错误,显示在下面的表指出一些你能用来更正这个问题的动作:
你是在安装MySQL以后运行mysql_install_db的脚本,来设置初始授权表内容吗?如果不是,这样做。见6.10 设置初始MySQL权限。通过执行这个命令测试初始权限:
shell> mysql -u root test
服务器应该让你无误地连接。你也应该保证你在MySQL数据库目录有一个文件“user.MYD”。通常,它是“PATH/var/mysql/user.MYD”,在此PATH是MySQL安装根目录的路径。
- 在一个新的安装以后,你应该连接服务器并且设置你的用户及其存取许可:
shell> mysql -u root mysql
服务器应该让你连接,因为MySQL root用户初始时没有口令。既然那也是一个安全风险,当你正在设置其他MySQL用户时,设定root口令是一件重要的事请。如果你作为root尝试连接并且得到这个错误:
Access denied for user: '@unknown' to database mysql
这意味着,你没有一个条目在user表中的一个User列值为'root'并且mysqld不能为你的客库解析主机名。在这种情况下,你必须用--skip-grant-tables选项重启服务器并且编辑你的“/etc/hosts”或“windowshosts”文件为你的主机增加一个条目。
- 如果你从一个3.22.11以前的版本更新一个现存的MySQL安装到3.22.11版或以后版本,你运行了mysql_fix_privilege_tables脚本吗?如果没有,运行它。在GRANT语句变得能工作时,授权表的结构用MySQL 3.22.11修改 。
- 如果你直接对授权表做修改(使用INSERT或UPDATE语句)并且你的改变似乎被忽略,记住,你必须发出一个FLUSH PRIVILEGES语句或执行一个mysqladmin flush-privileges命令导致服务器再次读入表,否则你的改变要道下一次服务器被重启时再生效。记住在你设定root口令以后,你将不需要指定它,直到在你清洗(flush)权限以后,因为服务器仍然不会知道你改变了口令!
- 如果你的权限似乎在一个会话(session)当中改变了,可能是一个超级用户改变了他们。再次装入授权表作用于新客户连接,但是它也影响现存的连接,如6.9 权限改变何时生效小节所述。
- 为了测试,用--skip-grant-tables选项启动mysqld守护进程,然后你可以改变MySQL授权表并且使用mysqlaccess脚本检查你的修改是否有如期的效果。当你对你的改变满意时,执行mysqladmin flush-privileges告诉mysqld服务器开始使用新的权限表。注意:再次装入授权表覆盖了--skip-grant-tables选项。这允许你告诉服务器开始使用授权表,而不用停掉并重启它。
- 如果你有一个Perl、Python或ODBC程序的存取问题,试着用mysql -u user_name db_name或mysql -u user_name -pyour_pass db_name与服务器连接。如果你能用mysql客户连接,这是你程序的一个问题而不是存取权限的问题。(注意在-p和口令之间没有空格;你也能使用--password=your_pass句法指定口令。)
- 如果你不能让口令工作,记得如果你用INSERT, UPDATE或SET PASSWORD语句设置口令,你必须使用PASSWORD()函数。如果你用GRANT ... INDENTIFIED BY语句或mysqladmin password命令指定口令,PASSWORD()函数是不需要的。见6.12 怎样设置口令。
- localhost是你本地主机名的一个同义词,并且也是如果你不明确地指定主机而客户尝试连接的缺省主机。然而,如果你正在运行于一个使用MIT-pthreads的系统上,连接localhost是不行的(localhost连接使用Unix套接字进行,它没被 MIT-pthreads支持),为了在这样的系统上避免这个问题,你应该使用--host选项明确地命名服务器主机,这将做一个 TCP/IP连接到mysqld服务器。在这种情况下,你必须有在服务器主机上的user表中条目的你真实的主机名。(即使你在服务器同一台的主机上运行一个客户程序,这也是真的。)
- 当尝试用mysql -u user_name db_name与数据库连接时,如果你得到一个Access denied错误,你可能有与user桌有关的问题,通过执行mysql -u root mysql并且发出下面的SQL语句检查:
mysql> SELECT * FROM user;
结果应该包含一个有Host和User列的条目匹配你的计算机主机名和你的MySQL用户名。
- Access denied错误消息将告诉你,你正在用哪个用户尝试登录,你正在试图用连接哪个主机,并且你是否正在使用一个口令。通常,你应该在user表中有一个条目,正确地匹配在错误消息给出的主机名和用户名。
- 如果当你试着从一个不是MySQL服务器正在运行的主机上连接时,你得到下列错误,那么在user表中没有匹配那台主机行:
Host ... is not allowed to connect to this MySQL server
你可以通过使用mysql命令行工具(在服务器主机上!)修正它,把你正在试图连接的用户/主机名组合新加一行到user表中。如果你不在运行MySQL 3.22并且你不知道你正在从它连接的机器的IP数字或主机名,你应该把一个'%'条目作为Host列值放在user表中并且在服务器机器上使用--log选项重启mysqld。在试图从客户机器连接以后,在MySQL记录文件中的信息将显示你如何真正进行连接。(然后用在记录文件上面显示出的实际的主机名代替user表中的'%'条目。否则,你将有一个不安全的系统。)
- 如果mysql -u root test工作但是mysql -h your_hostname -u root test导致Access denied,那么在user表中你可能没有你的主机的正确名字。这里的一个普遍的问题是在user表条目中的Host值指定一个唯一的主机名,但是你系统的名字解析例程返回一个完全正规的域名(或相反)。例如,如果你在user表中有一个主机是'tcx'的条目,但是你的 DNS告诉MySQL你的主机名是'tcx.subnet.se',条目将不工作。尝试把一个条目加到user表中,它包含你主机的IP数字作为Host列的值。(另外,你可以把一个条目加到user表中,它有包含一个通配符如'tcx.%'的Host值。然而,使用以“%”结尾的主机名是不安全的并且不推荐!)
- 如果mysql -u user_name test工作但是mysql -u user_name other_db_name不工作,对other_db_name,你在db表中没有没有一个条目列出。
- 当在服务器机器上执行mysql -u user_name db_name时,它工作,但是在其它客户机器上执行mysql -h host_name -u user_name db_name时,它却不工作,你没有把客户机器列在user表或db表中。
- 如果你不能弄明白你为什么得到Access denied,从user表中删除所有Host包含通配符值的条目(包含“%”或“_”的条目)。一个很普遍的错误是插入用Host='%'和User='some user'插入一个新条目,认为这将允许你指定localhost从同一台机器进行连接。它不工作的原因是缺省权限包括一个有Host='localhost'和User='的条目,因为那个条目一个比'%'更具体的Host值'localhost',当从localhost连接时,它用于指向新条目!正确的步骤是插入Host='localhost'和User='some_user'的第2个条目,或删除Host='localhost'和User='条目。
- 如果你得到下列错误,你可以有一个与db或host表有关的问题:
Access to database denied
- 如果从db表中选择了在Host列有空值的条目,保证在host表中有一个或多个相应的条目,指定运用db表中的哪些主机。如果在使用SQL命令SELECT ... INTO OUTFILE或LOAD DATA INFILE时,你得到错误,在user表中的你的条目可能启用file权限。
- 记住,客户程序将使用在配置文件或环境变量被指定了的连接参数。如果当你不在命令行上指定他们时,一个客户似乎正在发送错误的缺省连接参数,检查你的环境和在你的主目录下的“.my.cnf”文件。你也可以检查系统范围的MySQL配置文件,尽管更不可能将在那里指定那个客户的连接参数。见4.15.4 选项文件。如果当你没有任何选项运行一个客户时,你得到Access denied,确认你没在任何选项文件里指定一个旧的口令!见4.15.4 选项文件。
- 如果任何其它事情失败,用调试选项(例如,--debug=d,general,query)启动mysqld守护进程。这将打印有关尝试连接的主机和用户信息,和发出的每个命令的信息。见G.1 调试一个MySQL服务器。
- 如果你有任何与MySQL授权表的其它问题,而且觉得你必须邮寄这个问题到邮寄表,总是提供一个MySQL授权表的倾倒副本(dump)。你可用mysqldump mysql命令倾倒数据库表。象平时一样,用mysqlbug脚本邮寄你的问题。在一些情况下你可能用--skip-grant-tables重启mysqld以便能运行mysqldump。
相关图文阅读
频道图文推荐
相关专题
·电脑密码设置手册 (998篇文章)
·系统优化大全 (13868篇文章)
·系统安全设置 (18473篇文章)
·MySQL数据备份 (1667篇文章)
·系统安装手册 (16348篇文章)
·系统备份专题 (13473篇文章)
·Cisco密码恢复专题 (2681篇文章)
·Windows权限设置 (7758篇文章)
·MySQL (1573篇文章)
·MySQL安全 (8220篇文章)
·系统优化大全 (13868篇文章)
·系统安全设置 (18473篇文章)
·MySQL数据备份 (1667篇文章)
·系统安装手册 (16348篇文章)
·系统备份专题 (13473篇文章)
·Cisco密码恢复专题 (2681篇文章)
·Windows权限设置 (7758篇文章)
·MySQL (1573篇文章)
·MySQL安全 (8220篇文章)
·MySQL中文参考手册7(MySQL存取权限系统)gra (1967次浏览)
·防止sql注入的简单方法 (1903次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
·SQL Server 2005对海量数据处理 (47次浏览)
·50种方法巧妙优化SQL Server数据库 (37次浏览)
·SQL Server连接VFP数据库的实现 (35次浏览)
·SQL循序渐进(15)IN 和 BETWEEN 条件运算符 (27次浏览)
·解决SQL Server虚拟内存不足情况 (17次浏览)
·打造SQL Server2000的安全策略 (16次浏览)
·两种SQL Server灾难恢复方法 (9次浏览)
·防止sql注入的简单方法 (1903次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
·SQL Server 2005对海量数据处理 (47次浏览)
·50种方法巧妙优化SQL Server数据库 (37次浏览)
·SQL Server连接VFP数据库的实现 (35次浏览)
·SQL循序渐进(15)IN 和 BETWEEN 条件运算符 (27次浏览)
·解决SQL Server虚拟内存不足情况 (17次浏览)
·打造SQL Server2000的安全策略 (16次浏览)
·两种SQL Server灾难恢复方法 (9次浏览)
·MySQL中文参考手册7(MySQL存取权限系统)gra (1967次浏览)
·防止sql注入的简单方法 (1903次浏览)
·SQL Server开发者Oracle快速入门 (181次浏览)
·精细分析SQL server服务器的内存配置 (155次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
·利用标准SQL语句实现查询记录分页 (55次浏览)
·比较SQL Server约束和DML触发器 (49次浏览)
·SQL Server 2005对海量数据处理 (47次浏览)
·初探 SQL Server 2008 “Katmai ” (42次浏览)
·如何对SQL Server数据表和数据库进行迭代操作 (41次浏览)
·防止sql注入的简单方法 (1903次浏览)
·SQL Server开发者Oracle快速入门 (181次浏览)
·精细分析SQL server服务器的内存配置 (155次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
·利用标准SQL语句实现查询记录分页 (55次浏览)
·比较SQL Server约束和DML触发器 (49次浏览)
·SQL Server 2005对海量数据处理 (47次浏览)
·初探 SQL Server 2008 “Katmai ” (42次浏览)
·如何对SQL Server数据表和数据库进行迭代操作 (41次浏览)
·MySQL中文参考手册7(MySQL存取权限系统)gra (1967次浏览)
·防止sql注入的简单方法 (1903次浏览)
·MS-SQL开发常用汇总和t-sql技巧集锦 (404次浏览)
·SQL Server开发者Oracle快速入门 (181次浏览)
·轻松维护SQL Server 2005数据库 (160次浏览)
·精细分析SQL server服务器的内存配置 (155次浏览)
·教你如何在SQL Server计算列和平均值 (137次浏览)
·SQL Server 查询分析器快捷键集合 (123次浏览)
·解析SQL Server数据在不同数据库中的应用 (118次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
·防止sql注入的简单方法 (1903次浏览)
·MS-SQL开发常用汇总和t-sql技巧集锦 (404次浏览)
·SQL Server开发者Oracle快速入门 (181次浏览)
·轻松维护SQL Server 2005数据库 (160次浏览)
·精细分析SQL server服务器的内存配置 (155次浏览)
·教你如何在SQL Server计算列和平均值 (137次浏览)
·SQL Server 查询分析器快捷键集合 (123次浏览)
·解析SQL Server数据在不同数据库中的应用 (118次浏览)
·IIS、ASP.NET和SQLServer的安全性问题 (112次浏览)
最新技术文档
·防止sql注入的简单方法 07-18
·MySQL中文参考手册7(MySQL存取权限系统)grant设置 07-18
·IIS、ASP.NET和SQLServer的安全性问题 07-16
·SQL Server连接VFP数据库的实现 07-16
·SQL循序渐进(15)IN 和 BETWEEN 条件运算符 07-15
·解决SQL Server虚拟内存不足情况 07-13
·50种方法巧妙优化SQL Server数据库 07-11
·SQL Server 2005对海量数据处理 07-10
·打造SQL Server2000的安全策略 07-10
·SQL Server怪辟:异常与孤立事务 07-10
·MySQL中文参考手册7(MySQL存取权限系统)grant设置 07-18
·IIS、ASP.NET和SQLServer的安全性问题 07-16
·SQL Server连接VFP数据库的实现 07-16
·SQL循序渐进(15)IN 和 BETWEEN 条件运算符 07-15
·解决SQL Server虚拟内存不足情况 07-13
·50种方法巧妙优化SQL Server数据库 07-11
·SQL Server 2005对海量数据处理 07-10
·打造SQL Server2000的安全策略 07-10
·SQL Server怪辟:异常与孤立事务 07-10
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




