繁体   English   中英

在MySQL上设置用户帐户

[英]Setting up user accounts on mySQL

我看到在mySQL上设置用户帐户的命令是:

创建用户'userName'@'localhost'由'some_pass'标识;

对于本地主机,如果我希望用户能够从未打开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中,代替localhost,放置MySQL服务器的IP地址。

如果您的PHP服务器具有与MySQL服务器不同的IP地址或主机名,请在Grant语句中使用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在connect上看到的字符串:例如,说“ mysql”是同一件事不是“智能”的意思。

还应注意,创建用户不会授予其执行任何操作的权限。 通常,您也将需要使用GRANT来做到这一点。 您可以将权限授予整个服务器(不推荐!),数据库中的所有表甚至单个表。 如果需要的话,我强烈建议您使用'phpmyadmin'进行测试。

最后,我只是有点担心您会将MySQL用户和应用程序用户混为一谈。 通常,mysql用户表不用于应用程序级别的用户(例如,网站配置文件)。 我之所以这样说是因为创建数据库用户通常是一次性的事情,因此不需要应用程序代码即可完成...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM