无法连接:用户'root'@'localhost'拒绝访问

时间:2014-02-03 12:22:34

标签: php mysql

        <?php
            $name= $_POST["dbname"];
            $pass= $_POST["dbpass"];
            $rname= $_POST["rootname"];
            $rpass=$_POST["rootpass"];

            if ($rname='leave blank for default root name' or $name='')
                {
                    $rname="root";
                }
            if ($rpass='leave blank if no password assigned')
                {
                    $rpass='';
                }

            $con = mysql_connect("localhost", $rname, $rpass);

            if (!$con)
                {

                  die('Could not connect: ' . mysql_error());
                }

                    if (mysql_query("CREATE DATABASE {$name}",$con))
                        {
                          echo "Database created";
                         }
                        else
                          {
                              echo "Error creating database: " . mysql_error();
                          }
                    (mysql_query("DATABASEPASSWORD {$pass}",$con));


                mysql_close($con);      
        ?>

这是我用来创建数据库的php脚本,我传递rootname = root和rootpass = toor

但是我收到了错误

  

警告:mysql_connect():用户'root'@'localhost'拒绝访问   (使用密码:NO)在/var/www/webdefender/script/dbcreate.php上   第17行无法连接:用户'root'@'localhost'拒绝访问   (使用密码:否)

但是当我使用

$con = mysql_connect("localhost", 'root','toor' );

一切正常

请帮忙

3 个答案:

答案 0 :(得分:4)

您在前2次检查中分配值,而不是检查它们是否相等。

$a = 1; // assigning
$a == 1; // this is a check if 1 is $a is equal to 1

所以你基本上将$ rpass值重置为''(空字符串):

if ($rpass='leave blank if no password assigned')
{
   $rpass='';
}

将您的支票更改为使用==,它将有效。

请注意,从脚本使用root访问权限是一个巨大的安全隐患。

答案 1 :(得分:0)

请勿在{{1​​}}

附近使用或使用以下代码
if ($rname='')

答案 2 :(得分:0)

如果像这样使用,那么它就是一般的

if($a=b)

始终返回true,$ a的值为b
正确的语法是

if($a==b)

所以当且仅当$ a value = b时它返回true