对于我的大学项目,我正在连接到MySQL数据库。从covid 19开始,我无法去uni,所以必须远程进行操作,任何人都可以通过PHP连接进行帮助吗?
SSH主机名:ssh.University.uk:2223 SSH用户名:s4905304 SHH密码:.... SSH密钥文件:空白
MySQL主机名:127.0.0.1 MySQL服务器端口:3306 用户名:s4905304 密码:.....
答案 0 :(得分:1)
尝试一下:
第1步。
为您的SSH tunnel
数据库服务器设置MySQL
(为了安全起见,最好通过Jumpbox
)。
ssh -fNg -L 3307:10.3.1.55:3306 username@ssh_jumpbox.com
这里的键是-L,表示我们正在进行本地端口转发。
本地端口转发语法
<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end>
username@ssh_proxy_host.com
其他开关是:
私钥身份验证,将(-i)开关添加到上面:
-i /path/to/private-key
第2步。
告诉本地MySQL
客户端通过计算机(SSH tunnel
)上的本地端口3307
通过-h 127.0.0.1
进行连接,该端口现在转发通过SSH tunnel
是您在步骤1中建立的。
mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
客户端和服务器之间的数据交换现在通过加密的SSH连接发送,并且很安全。
不建议直接隧道连接到数据库服务器-使数据库服务器可直接从Internet访问是巨大的安全责任。将隧道目标地址设为Jumpbox / Bastion主机的Internet地址(请参阅步骤1中的示例),并将数据库目标为远程网络上数据库服务器的内部 IP地址。 SSH将完成其余的工作。
在http://chxo.com/be2/20040511_5667.html
上感谢Chris Snyder的精彩文章第3步。
正在连接。 DSN
PDO
具有一种称为DSN的精美连接方法。没什么 虽然很复杂-而不是一个简单明了的选项列表,PDO
要求您输入三个不同的配置指令 不同的地方:
database driver
,host
,db (schema) name
和charset
,以及不常使用的port
和unix_socket
进入DSN;username
和password
进入构造函数;- 所有其他选项进入选项数组。
其中
DSN
是用分号分隔的字符串,由param=value
组成 对,以驱动程序名称和冒号开头:mysql:host=localhost;dbname=test;port=3306;charset=utf8mb4 driver^ ^ colon ^param=value pair ^semicolon
请注意,遵循正确的格式非常重要-不得使用空格或 DSN中必须使用引号或其他修饰,但仅 参数,值和定界符,如manual所示。
以下是
MySQL
的示例:$host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { throw new \PDOException($e->getMessage(), (int)$e->getCode()); }