我看到在mySQL上设置用户帐户的命令是:
创建用户'userName'@'localhost'识别'some_pass';
对于本地主机,如果我希望用户能够从另一个没有启用mySQL数据库的ip地址插入,我是否会保留该本地主机?
另外,如果我创建一个匹配上面的连接类,它会是这样的:
<?php
class myConnect extends mysqli{
public function __construct($hostname='localhost',
$user='userName',
$password='some_pass',
$dbname='dbName'){
parent::__construct($hostname, $user, $password, $dbname);
}
}
?>
我再次担心上面php类中的localhost部分。基本上,php不是goign与数据库在同一台服务器上。
更新
尝试下面的答案,但我仍然得到这个PHP错误:
Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2003): Can't connect to MySQL server on 'mySQLIP' (111) in /home4/m133414/public_html/myDigitalOcean.php on line 12
答案 0 :(得分:1)
如果php安装在与MySQL不同的服务器上,则需要将localhost更改为MySQL看到php服务器的IP地址。这是在用户创建中。如果您希望从任何地方获得它,请将localhost更改为'%'
在php中,代替localhost,输入MySQL服务器的IP地址。
答案 1 :(得分:0)
如果您的PHP服务器具有与MySQL服务器不同的IP地址或主机名,请在授权声明中使用PHP服务器的IP /主机名
CREATE USER 'userName'@'php.server.ip.goes.here' IDENTIFIED BY 'some_pass';
如果您希望用户能够从任何地方连接到您的服务器,您可以使用通配符:
CREATE USER 'userName'@'%' IDENTIFIED BY 'some_pass';
虽然这通常是不安全的。
你应该使用&#39; localhost&#39;如果您希望用户只能从与MySQL服务器相同的IP /主机连接到您的服务器。这适用于您的Web服务器与MySQL服务器位于同一主机上的情况。
答案 2 :(得分:0)
Mysql对用户帐户字符串格式非常挑剔,特别是将主机名'localhost'视为特殊(并且具体取决于版本)。
如果主机名是'localhost',则许多mysql版本将使用本地Unix Socket(而不是TCP / IP)进行连接。如果您使用DNS名称,例如mysql.server.example.org,请注意您需要准确包含mysql在连接上看到的字符串:例如,“mysql”中的字符串不是“智能”。 / p>
请注意,创建用户不会授予其执行任何操作的权限。您通常也需要使用GRANT来执行此操作。您可以授予整个服务器(不推荐!)或数据库中的所有表,甚至单个表的权限。如果需要,我强烈建议使用'phpmyadmin'进行测试。
最后,我只是有点担心你正在混淆mysql用户和应用用户。通常,mysql用户表不用于应用程序级用户(例如网站配置文件)。我这样说是因为DB用户创建通常是一次性的事情,因此不需要应用程序代码来执行它...