我正在尝试将 mysql 访问到远程服务器,并在那里创建一个数据库。我正在使用腻子连接。问题是无论我做什么,我都会收到“拒绝访问”错误:
:mysql -p
:mysql -u <username> -p
.
.
.
我仍然收到警告。
错误 1045 (28000):拒绝用户“用户名”@“本地主机”的访问(使用密码:否)
错误 1045 (28000):拒绝用户“用户名”@“本地主机”的访问(使用密码:是)
每个场合一个,当我不输入密码时,当我输入密码时。
我正在尝试将 mysql 访问到远程服务器,并在那里创建一个数据库。我正在使用腻子连接。问题是无论我做什么,我都会收到“拒绝访问”错误:
:mysql -p
:mysql -u <username> -p
.
.
.
我仍然收到警告。
错误 1045 (28000):拒绝用户“用户名”@“本地主机”的访问(使用密码:否)
错误 1045 (28000):拒绝用户“用户名”@“本地主机”的访问(使用密码:是)
每个场合一个,当我不输入密码时,当我输入密码时。
您在远程访问 MySql 时遇到问题。从这里
首先,通过 ssh 登录到远程 MySQL 数据库服务器
连接后,您需要使用 vi 等文本编辑器编辑 mysql 配置文件 my.cfg。
在 Debian Linux 文件位于/etc/mysql/my.cnf
# vi /etc/my.cnf
确保 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
....
..
....
其中 - bind-address :要绑定的 IP 地址。- skip-networking:根本不监听 TCP/IP 连接。与 mysqld 的所有交互都必须通过 Unix 套接字进行。对于只允许本地请求的系统,强烈建议使用此选项。由于您需要允许远程连接,因此应从文件中删除此行或将其置于注释状态。
重新启动您的 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';
输入exit命令退出mysql
mysql> exit
从远程系统类型命令
$ mysql -u webadmin –h 172.20.5.2 –p
您也可以使用 telnet 连接到 3306 端口进行测试
$ telnet 172.20.5.2 3306