Mysql 拒绝用户访问';测试'@';本地主机';(使用密码:是)根用户除外

Mysql 拒绝用户访问';测试'@';本地主机';(使用密码:是)根用户除外,mysql,mysql-error-1045,Mysql,Mysql Error 1045,我面临mysql非root/admin用户的问题,我按照以下步骤创建用户及其权限,如果我做错了,请纠正我 我正在RHEL 5.7 64位上安装mysql,下面提到了包,一旦我完成rpm安装,我们就可以开始了 使用mysql\u install\u db创建mysql数据库,然后 然后启动mysql服务 使用mysql\u升级我们也在对服务器进行升级 完成此过程后,我可以以root身份登录,但使用非root用户时,我无法登录到服务器: [root@clustertest3 ~]# rpm -qa

我面临mysql非root/admin用户的问题,我按照以下步骤创建用户及其权限,如果我做错了,请纠正我

我正在
RHEL 5.7 64位上安装
mysql
,下面提到了包,一旦我完成
rpm安装
,我们就可以开始了

  • 使用
    mysql\u install\u db
    创建mysql数据库,然后
  • 然后启动mysql服务
  • 使用
    mysql\u升级
    我们也在对服务器进行升级
  • 完成此过程后,我可以以
    root
    身份登录,但使用非root用户时,我无法登录到服务器:

    [root@clustertest3 ~]# rpm -qa | grep MySQL
    MySQL-client-advanced-5.5.21-1.rhel5
    MySQL-server-advanced-5.5.21-1.rhel5
    
    
    [root@clustertest3 ~]# cat /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    
    # Disabling symbolic-links is recommended to prevent assorted security risks;
    # to do so, uncomment this line:
    # symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    [root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock
    srwxrwxrwx 1 mysql mysql 0 Nov  30 11:09 /var/lib/mysql/mysql.sock
    
    mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT USER(),CURRENT_USER();
    +----------------+----------------+
    | USER()         | CURRENT_USER() |
    +----------------+----------------+
    | root@localhost | root@localhost |
    +----------------+----------------+
    1 row in set (0.00 sec)
    
    [root@clustertest3 ~]# mysql -ugolden -p
    Enter password:
    ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
    
    这就是我面临的问题,有什么解决办法吗?

    试试:

    CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
    FLUSH PRIVILEGES;
    

    或者更好地使用:
    mysql\u setpermission
    创建用户

    不要将所有数据库的所有权限授予非root用户,这是不安全的(并且您已经拥有该角色的“root”)

    查看以查看所有特权的详细信息

    编辑:您可以通过此查询查找更多信息(以“root”身份登录):


    看看发生了什么事

    对于那些接受了所有建议但问题仍然存在的人

    检查存储过程和视图定义。这些定义者可能不再存在。


    当我们将通配符主机(%)更改为IP特定时,我的问题就出现了,这使数据库更加安全。不幸的是,有些视图仍然使用“user”@“%”,尽管“user”@“172…”在技术上是正确的。

    如果您使用远程计算机(示例工作台)等连接到MySQL,请使用以下步骤在安装MySQL的操作系统上消除此错误

    mysql -u root -p
    
    CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
    GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
    FLUSH PRIVILEGES;
    
    mysql-u root-p
    创建由“”标识的用户“@%%”;
    授予**上的所有特权到“@%%”;
    同花顺特权;
    
    尝试登录MYSQL实例。

    这对我消除了这个错误起到了作用。

    只需在主机名或MySQL主机地址中添加计算机名而不是“localhost”。

    我也有类似的问题,后来我发现这是因为我更改了主机名(不是
    localhost

    因此,我通过指定
    --host=127.0.0.1

    mysql -p mydatabase --host=127.0.0.1
    

    根据您创建用户的方式,MySQL以不同的方式进行解释。例如,如果您创建这样的用户:

    create user user01 identified by 'test01';
    
    MySQL希望您使用
    grant all on.*给user01一些特权

    别忘了
    刷新权限

    但是,如果您创建这样的用户(通过传递IP地址),则必须将其更改为:

    create user 'user02'@'localhost' identified by 'teste02';
    
    因此,要授予某些特权,您必须这样做:

    grant all on <your_db>.* to user02@localhost;
    flush privileges;
    
    grant all on.*授予user02@localhost;
    同花顺特权;
    
    在我的例子中,同样的错误也会发生,因为我试图通过键入“mysql”而不是“mysql-u root-p”来使用mysql

    看起来您试图让一个用户成为“golden”@“%”,但另一个名为“golden”@“localhost”的用户妨碍了/具有优先权

    执行以下命令以查看用户:

    SELECT user,host FROM mysql.user;
    
    您应该看到两个条目:

    1) 用户=golden,主机=%

    2) user=golden,host=localhost

    执行以下命令:

    DROP User 'golden'@'localhost';
    DROP User 'golden'@'%';
    
    重新启动MySQL工作台

    然后再次执行原始命令:

    CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
    
    然后,当您尝试登录MySQL时,按如下方式键入:


    点击“测试连接”并输入您的密码“密码”

    从mysqlworkbench连接服务器并运行此命令->
    更改由“yourpassword”标识的用户“root”@“localhost”

    首先,我使用以下方法创建用户:

    CREATE user user@localhost IDENTIFIED BY 'password_txt';
    
    在谷歌搜索和查看之后,我使用以下方法更新了用户密码:

    SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
    

    然后我可以连接。

    确保用户在用户表中有localhost条目。这就是我遇到的问题。例:

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    

    对于恼人的搜索,请在搜索此错误消息后到达此处:

    拒绝访问用户的帐户someuser@somewhere'(使用密码:是)

    我的问题不是用引号括起密码。例如,我需要使用
    -p'password'
    而不是
    -ppassword

    试试这个: 如果您已经创建了用户,则可能使用错误的密码创建了用户

    因此,删除该用户并通过这样做创建另一个用户。 查看您当前的用户

    从mysql.User中选择主机、用户

    删除用户

    删除用户“”@'localhost'

    之后,您可以使用正确的密码再次创建用户

    创建用户“”@'localhost',通过“”使用mysql_native_密码标识。

    然后

    FLUSH特权

    在访问数据库时,您可能还会遇到更多的错误,如果您遇到该错误,请运行此命令


    将**上的所有权限授予'@'localhost'

    您能否以root用户身份登录,然后从mysql执行
    选择*。用户
    接受对您有效的答案,以便其他用户知道您是如何解决问题的。这并不能解决问题。创建由“some_pass”标识的用户“goldy”@“%”;是一个有效的查询,因为his的
    %
    应该适用于所有主机,但没有解决它。因此,通过指定
    localhost
    它应该可以工作。如果这不起作用,那么mysql中的某些东西就不起作用了,因为即使在运行“mysql-u root-p”时,它也会提示错误。谢谢你让我走上了正确的轨道。我甚至不知道视图和存储过程上的SQL安全设置。最后,我将SQL安全设置为我的视图上的Invoker,以便它使用执行命令的用户的权限,而不是创建视图的用户的权限。这里有一个链接供参考:我不同意关于root的说法。是的,你不应该随意给予超级特权。但是,您通常也不应该使用共享帐户,因为您在数据库中没有适当的审计跟踪。如果您必须拥有共享帐户,例如
    CREATE user user@localhost IDENTIFIED BY 'password_txt';
    
    SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
    
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';