我有这些用户MySQL数据库
mysql> select User,Host from mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| debian-sys-maint | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
mysql>
我的虚拟机里有一个用户kyo
。
VM 中的用户与 MySQL 中的用户不同吗?
我需要kyo
在 MySQL 中创建另一个用户吗?
我需要做什么才能从本地机器远程连接到 MySQL?
我添加了一个用户
select User,Host from mysql.user;
CREATE USER 'kyo'@'24.62.137.111' IDENTIFIED BY 'p4$$w0rd';
GRANT ALL PRIVILEGES ON * . * TO 'kyo'@'24.62.137.111';
FLUSH PRIVILEGES;
select User,Host from mysql.user;
我现在看到了
mysql> select User,Host from mysql.user;
+------------------+---------------+
| User | Host |
+------------------+---------------+
| root | 127.0.0.1 |
| kyo | 24.62.137.111 |
| root | ::1 |
| root | iggy |
| debian-sys-maint | localhost |
| root | localhost |
+------------------+---------------+
6 rows in set (0.00 sec)
我不断得到
2013 - 在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0“内部错误/检查(非系统错误)”
更新
我运行了 nmap 扫描
我看到了
PORT STATE SERVICE
3306/tcp filtered mysql
这是否意味着我的端口 3306 不对外开放?我应该进行远程访问?对吗?
答案1
Navicat 似乎有为 MySQL 连接创建 SSH 隧道的选项。
当您创建新连接时
无论您在那里建立了什么连接 - 您都可以使用 Root 用户名/密码。如果您想为 MySQL 创建单独的用户名/密码 - 您也可以这样做。主机是 localhost(因为您正在本地连接)。
在 SSH 选项卡中 - 输入您的 SSH 凭据(如何通过 SSH 进入 VM)。
回答你的问题:
- VM 中的用户与 MySQL 中的用户不同吗?是的。VM 上的用户 kyo 与 MySQL 中的 kyo 是不同的用户 - 并且它也可以有不同的密码。
- 我需要在 MySQL 中创建另一个 kyo 用户吗?如果你更喜欢
- 我需要做什么才能从本地机器远程连接到 MySQL?如上所述 - SSH 隧道到您的 MySQL 实例。
(注:个人观点)除非绝对必要,否则我不会公开 MySQL 实例。将其留在 VM 后面并通过 SSH 隧道在本地访问它。
编辑(提供澄清):
- MySQL 服务器已经在端口 3306 上“打开”,但根据你的 mysql db - 它只接受来自某些帐户的连接(root@localhost 和[电子邮件保护])。
- VM 本身有自己的一套规则(用于允许传入连接)。您需要在 VM 上打开端口 3306。
- 您需要更改“kyo”用户名以允许本地主机连接(不是该 IP),因为您不是直接从您的机器(24.62.137.111)连接到 MySQL 服务器。您正在连接到虚拟机上的 SSH 服务器 - 然后通过本地主机连接到 MySQL 服务器。将 mysql 上的 kyo 编辑为 kyo@localhost - ssh 隧道将正常工作。