【问题标题】:mysql access denied, ssh database hostmysql访问被拒绝,ssh数据库主机
【发布时间】:2011-07-06 23:13:09
【问题描述】:

我正在尝试将 mysql 访问到远程服务器,并在那里创建一个数据库。 我正在使用腻子连接。问题是我收到“拒绝访问”错误 不管我做什么:

:mysql -p
:mysql -u <username> -p
.
.
.

我仍然收到警告。

ERROR 1045 (28000): 拒绝用户 'username'@'localhost' 的访问(使用密码:否)

ERROR 1045 (28000): 拒绝用户 'username'@'localhost' 的访问(使用密码:YES)

每个场合一个,当我不输入密码时,当我输入密码时。

【问题讨论】:

    标签: mysql ssh mysql-error-1045


    【解决方案1】:

    您在远程访问 MySql 时遇到问题。来自here

    • 步骤#1:通过ssh登录

    首先,通过 ssh 登录远程 MySQL 数据库服务器

    • 第 2 步:启用网络

    连接后,您需要使用 vi 等文本编辑器编辑 mysql 配置文件 my.cfg。

    在Debian Linux中文件位于/etc/mysql/my.cnf

    # vi /etc/my.cnf
    
    • 第 3 步:打开文件后,找到读取为 [mysqld] 的行

    确保 line skip-networking 被注释(或删除行)并添加以下行

    bind-address=YOUR-SERVER-IP
    

    例如,如果您的 MySQL 服务器 IP 是 172.20.5.2,那么整个块应该如下所示:

    [mysqld]
    user = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    socket = /var/run/mysqld/mysqld.sock
    port = 3306
    basedir = /usr
    datadir = /var/lib/mysql
    tmpdir = /tmp
    language = /usr/share/mysql/English
    bind-address = 172.20.5.2
    
    # skip-networking
    ....
    ..
    ....
    

    在哪里 - 绑定地址:要绑定的 IP 地址。 - skip-networking:根本不监听 TCP/IP 连接。与 mysqld 的所有交互都必须通过 Unix 套接字进行。对于只允许本地请求的系统,强烈建议使用此选项。由于您需要允许远程连接,因此应从文件中删除此行或将其置于注释状态。

    • Step# 4 保存并关闭文件。

    重启你的mysql服务以使更改生效

    # /etc/init.d/mysql restart
    
    • 步骤 # 5 授予对远程 IP 地址的访问权限

      # mysql -u root –p mysql

    授予对新数据库的访问权限

    如果要为用户 bar 和远程 IP 162.54.10.20 添加名为 foo 的新数据库,则需要在 mysql> 提示符下键入以下命令:

    mysql> CREATE DATABASE foo;
    
    mysql> GRANT ALL ON foo.* TO bar@'162.54.10.20' IDENTIFIED BY 'PASSWORD';
    

    授予对现有数据库的访问权限

    假设您总是从名为 162.54.10.20 的远程 IP 为用户 webadmin 的名为 webdb 的数据库建立连接,那么您需要授予对该 IP 地址的访问权限。在 mysql> 提示符下为现有数据库键入以下命令:

    mysql> update db set Host='162.54.10.20' where Db='webdb';
    
    mysql> update user set Host='162.54.10.20' where user='webadmin';
    
    • 第 6 步:注销 MySQL

    输入exit命令退出mysql

    mysql> exit
    
    • 第 7 步:测试

    从远程系统类型命令

    $ mysql -u webadmin –h 172.20.5.2 –p
    

    您也可以使用 telnet 连接到 3306 端口进行测试

    $ telnet 172.20.5.2 3306
    

    【讨论】:

    • 在第 5 步,'root'@'localhost' 再次被拒绝。 /etc/主机名 = 本地主机。我错过了什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多