Php 对'的访问被拒绝;用户'@';本地主机';
我正在尝试使用phalcon创建模型。但是当我键入Php 对'的访问被拒绝;用户'@';本地主机';,php,mysql,phalcon,Php,Mysql,Phalcon,我正在尝试使用phalcon创建模型。但是当我键入phalcon model polls时,我得到一个错误,用户'root'@'localhost'(使用密码:YES)的访问被拒绝 我可以使用mysql-p进入mysql。所以我试着创建一个新用户,并授予他所有的特权,但没用。我还可以使用root和密码登录phpmyadmin。我还试图在配置文件中将端口指定为3306,但仍然没有 我的配置文件: defined('BASE_PATH') || define('BASE_PATH', getenv(
phalcon model polls
时,我得到一个错误,用户'root'@'localhost'(使用密码:YES)的访问被拒绝
我可以使用mysql-p
进入mysql。所以我试着创建一个新用户,并授予他所有的特权,但没用。我还可以使用root和密码登录phpmyadmin。我还试图在配置文件中将端口指定为3306,但仍然没有
我的配置文件:
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
return new \Phalcon\Config([
'database' => [
'adapter' => 'Mysql',
'host' => 'localhost',
'port' => 3306,
'username' => 'root',
'password' => '$Pass1234 ',
'dbname' => 'poll_db',
'charset' => 'utf8',
],
'application' => [
'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH . '/controllers/',
'modelsDir' => APP_PATH . '/models/',
'migrationsDir' => APP_PATH . '/migrations/',
'viewsDir' => APP_PATH . '/views/',
'pluginsDir' => APP_PATH . '/plugins/',
'libraryDir' => APP_PATH . '/library/',
'cacheDir' => BASE_PATH . '/cache/',
// This allows the baseUri to be understand project paths that are not in the root directory
// of the webpspace. This will break if the public/index.php entry point is moved or
// possibly if the web server rewrite rules are changed. This can also be set to a static path.
'baseUri' => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]),
]
]);
p.S我通过mysql-u root-p
p.p.S我也使用了FLUSH特权
,然后重新启动了mysql,但什么都没有。谢谢你以后的帮助
UPD:我还尝试在laravel中创建项目,并使迁移和一切工作正常。我还使用了root+密码
解决方法:我不知道为什么,但我决定创建一个新项目,即使使用“root”@“localhost”,一切都很好。第一个项目好像出了点问题。尽管如此,还是要感谢所有参与帮助的人
p.S我将应答标记为解决方案,仅适用于将来可能遇到相同错误的人。我不认为这是端口问题,请求正在到达目的地。使用
root@localhost
将在通过命令行(mysql-u root-p
)登录时工作,但您不想将其用于连接代码。请记住,在建立连接时,需要明确使用host=localhost
或host=127.0.0.1
。如果您使用IP地址(即使在同一台服务器上),您将被拒绝访问
[user@localhost ~]# mysql --host=127.0.0.1 --protocol=TCP -u root -p
Enter password:
mysql>
[user@localhost ~]# mysql --host=192.168.1.10 --protocol=TCP -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'hostname' (using password: YES)
以下是我建议采取的步骤:
CREATE USER '<user>'@'localhost'
IDENTIFIED BY 'password';
GRANT ALL
ON <database>.*
TO '<user>'@'localhost';
创建用户“”@'localhost'
由“密码”标识;
全数同意
开*
到“”@'localhost';
CREATE USER '<user>'@'<IP_address>'
IDENTIFIED BY 'password';
GRANT ALL
ON <database>.*
TO '<user>'@'<IP_address>';
创建用户“”@“
由“密码”标识;
全数同意
开*
至“@”;
CREATE USER '<user>'@'<IP_address>'
IDENTIFIED BY 'password';
GRANT ALL
ON <database>.*
TO '<user>'@'%';
创建用户“”@“
由“密码”标识;
全数同意
开*
到“@%”;
如果您有任何疑问,这里有一个指向的链接。您如何在DI容器中注册数据库服务?@NikolaosDimopoulos我没有在DI容器中注册服务,我在phalcon是全新的。您是使用socket还是tcp连接在Laravel中的MySQL服务器?@Koalayeng我不确定,我使用composer create project创建项目,然后使用hust modify.env文件在您的Laravel的
.env
文件中是否有DB_PORT
“您不想用它连接代码”如果OP是通过TCP(在他们的代码中)连接的,我相信不会。除非root拥有'root'@'
特权,但情况似乎并非如此。我一直认为localhost
的默认设置是(尝试)使用套接字。通常,如果您想要强制执行TCP,您可以使用127.0.0.1
来测试一些不同的场景。例如,如果他们实际上正在使用localhost建立连接,那么这种连接可能会起作用。但是,如果他们使用的是IP地址(除127.0.0.1之外),我认为不会。Idk为什么,但我创建了新项目,所有这些都开始正常工作,包括根用户。