ECS实例中的MySQL安装后登录正常,但远程连接MySQL数据库时失败,提示“1045 - Access denied for user 'root'@'****'(using password:YES)”错误怎么办?

本文介绍ECS实例中的MySQL安装后登录正常,但远程连接MySQL数据库时失败,提示“1045 - Access denied for user 'root'@'****'(using password:YES)”错误的解决方案。

问题现象

ECS实例中的MySQL安装后登录正常,但使用相同账号和密码远程连接MySQL数据库时失败,提示“1045 - Access denied for user 'root'@'****'(using password:YES)”错误(确认已输入正确账号和密码)。

问题原因

在ECS实例中安装MySQL后,MySQL默认只允许在本机登录,MySQL数据库未授权其它远程IP地址登录。

解决方案

请参考以下操作步骤,增加远程IP地址访问MySQL的授权。

  1. 远程连接ECS实例。

    具体操作,请参见连接方式概述ECS远程连接操作指南

  2. 登录MySQL数据库,然后执行如下授权SQL命令,授权远程登录MySQL数据库权限。

    CREATE USER 'newuser'@'%' IDENTIFIED BY '密码';
    GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
    说明

    执行该授权SQL命令后,新创建的'newuser'用户可以从任何IP地址登录数据库,操作任何数据库中的任何对象。为加强数据库登录安全,建议授权固定的远程IP登录。

    SQL命令参数说明如下表:

    参数

    描述

    *.*

    第一个星号(*)为数据库占位符,如果填*则代表所有数据库。第二个星号(*)为数据库表占位符,如果填*则代表数据库中所有表。

    'newuser'@'%'

    newuser为授权登录的数据库账户,百分号(%)为IP地址占位符。假如要限制只能通过1.1.1.1的IP地址登录,则需要把%改成1.1.1.1,如果填%则代表允许任何IP地址登录。

  3. 执行如下SQL语句刷新权限。

    flush privileges;
  4. 重新远程连接MySQL数据库,若不再提示以上报错信息,则表示问题已修复。