我看到在mySQL上设置用户帐户的命令是:
CREATE USER'userName'@'localhost'由'some_pass'标识;
对于localhost,如果我希望用户能够从mySQL DB不在的另一个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不会和数据库在同一台服务器上。
更新:
尝试了下面的答案,但我仍然得到这个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
如果php安装在与MySQL不同的服务器上,则需要将localhost更改为MySQL认为php服务器的IP地址。这是在用户创建中。如果您想从任何地方获得它,请将localhost更改为"%"
在php中,用MySQL服务器的IP地址代替localhost。
如果您的PHP服务器的IP地址或主机名与MySQL服务器不同,请在授权语句中使用PHP服务器的IP/主机名
CREATE USER 'userName'@'php.server.ip.goes.here' IDENTIFIED BY 'some_pass';
如果你希望用户能够从任何地方连接到你的服务器,你可以使用通配符:
CREATE USER 'userName'@'%' IDENTIFIED BY 'some_pass';
尽管这通常是不安全的。
如果您希望用户只能从与MySQL服务器相同的IP/主机连接到您的服务器,则应使用"localhost"。这适用于Web服务器与MySQL服务器位于同一主机上的情况。
Mysql对用户帐户字符串格式非常挑剔,特别是将主机名"localhost"视为特殊名称(具体方式取决于版本)。
如果主机名是"localhost",那么许多mysql版本将使用本地Unix套接字(而不是TCP/IP)进行连接。如果你使用一个DNS名称,如mysql.server.example.org,请注意,你需要准确地包括mysql在连接时看到的字符串:例如,说"mysql"是同一个东西并不是"智能的"。
还要注意,创建用户并不会授予它做任何事情的权限。您通常也需要使用GRANT来完成此操作。您可以将权限授予整个服务器(不推荐!)、数据库中的所有表,甚至单个表。如果需要,我强烈建议使用"phpmyadmin"进行测试以对此进行调查。
最后,我只是有点担心您将mysql的用户和应用程序的用户混为一谈。通常,mysql用户表不用于应用程序级别的用户(例如网站配置文件)。我这么说是因为DB用户的创建通常是一次性的,因此不需要应用程序代码来完成…