You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中MySQL连接报错求助:root1用户localhost访问被拒绝

解决MySQL连接权限错误(Access denied for user 'root1'@'localhost')

错误信息

MySql.Data.MySqlClient.MySqlException: 'Authentication to host 'localhost' for user 'root1' using method 'mysql_native_password' failed with message: Access denied for user 'root1'@'localhost' (using password: YES)'

排查与解决步骤

1. 验证MySQL用户的合法性

  • 登录MySQL命令行,执行以下命令检查目标用户是否存在:
    SELECT user, host FROM mysql.user;
    
    如果root1@localhost不在结果列表中,执行以下语句创建用户并授权:
    CREATE USER 'root1'@'localhost' IDENTIFIED BY 'adimuser';
    -- 授权访问目标数据库(匹配你SQL语句中的access_control库)
    GRANT ALL PRIVILEGES ON access_control.* TO 'root1'@'localhost';
    FLUSH PRIVILEGES;
    

2. 修正连接字符串的参数错误

你的连接字符串中指定database=access_table,但SQL语句查询的是access_control.accesstable,说明数据库名应为access_control,需修正连接字符串:

Dim sqlConn As New MySqlConnection("server=localhost; user=root1; password=adimuser; database=access_control")

同时确认密码adimuser是否拼写正确(比如是否应为adminuser)。

3. 优化代码避免资源泄漏与重复加载

原代码存在连接状态未校验、资源未自动释放、数据重复加载的问题,建议修改为:

Private Sub updateTable()
    Dim sqlDT As New DataTable()
    ' 使用Using语句自动释放数据库连接、命令、阅读器资源
    Using sqlConn As New MySqlConnection("server=localhost; user=root1; password=adimuser; database=access_control")
        sqlConn.Open()
        Using sqlCmd As New MySqlCommand("SELECT * From accesstable", sqlConn)
            Using sqlRd As MySqlDataReader = sqlCmd.ExecuteReader()
                sqlDT.Load(sqlRd)
            End Using
        End Using
    End Using
    DataGridView1.DataSource = sqlDT
End Sub

4. 适配MySQL 8.0+的认证方式

若你的MySQL版本为8.0及以上,默认认证方式为caching_sha2_password,而错误提示使用mysql_native_password,可修改用户认证方式:

ALTER USER 'root1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'adimuser';
FLUSH PRIVILEGES;

内容的提问来源于stack exchange,提问作者Buchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:50:30