如何解决MysqlHY000 / 1045:通过php拒绝访问,但可以通过mac终端访问
推荐:我使用的是127.0.0.1,而不是本地主机。
我在Mac终端中使用用户名和密码成功访问了mysql数据库globe_bank:
Ashlys-MBP:~ Ashly$ mysql -u Webuser -p globe_bank
Enter password:
mysql>
但是,我无法使用相同的用户名和密码从php登录。这是浏览器中显示的警告消息:
警告:mysqli_connect():(HY000 / 1045):拒绝用户访问 的“ webuser” @“ localhost”(使用密码:是) /Applications/MAMP/htdocs/Globe_bank/private/database.php,第6行
这是我的代码:
define("DB_SERVER","localhost");
define("DB_USER","Webuser");
define("DB_PASS","7654321aA!");
define("DB_NAME","globe_bank");
function db_connect() {
$connection = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME); //line 6
return $connection;
}
function db_disconnect($connection) {
if(isset($connection)) {
mysqli_close($connection);// line 12
}
}
也
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| Webuser | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
和
mysql> SELECT USER(),CURRENT_USER();
+-------------------+-------------------+
| USER() | CURRENT_USER() |
+-------------------+-------------------+
| Webuser@localhost | Webuser@localhost |
+-------------------+-------------------+
1 row in set (0.00 sec)
我检查了Webuser的赠款:
mysql> SHOW GRANTS FOR 'Webuser'@'localhost';
+---------------------------------------------------------------------------+
| Grants for Webuser@localhost
+---------------------------------------------------------------------------+
| GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,FILE,REFERENCES,INDEX,ALTER,SHOW DATABASES,SUPER,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER,CREATE TABLESPACE,CREATE ROLE,DROP ROLE ON *.* TO `Webuser`@`localhost` WITH GRANT OPTION
| GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `Webuser`@`localhost` WITH GRANT OPTION |
2 rows in set (0.00 sec)
然后
mysql> FLUSH PRIVILEGES;
顺便
-
mysql版本为mysql-8.0.22-macos10.15-x86_64。
-
这是我在终端中创建用户的方式:
mysql>创建用户'Webuser'@'localhost'由'7654321aA!'标识;
-
我的端口应该是8888,我使用MAMP,当它启动时,它显示 浏览器上的“ localhost:8888 / MAMP /?language = English”。
-
我重新启动了mysql,警告仍然存在。
-
实际上,还有另一条警告消息,我认为导致此警告的原因是因为我无法首先访问mysql数据库。底部的另一个警告显示是(我在上面的php代码中标记了第12行)
警告:mysqli_close()期望参数1为mysqli,给定布尔值 在/Applications/MAMP/htdocs/Globe_bank/private/database.php中在线 12
- 找到数据目录,|。 datadir | / usr / local / mysql / data / |,但是“文件夹” data无法打开,因为您没有 有权查看其内容。”
我遵循了一些建议,并做了以下一些事情:
mysql>描述用户;
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(255) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
51 rows in set (0.01 sec)
然后
mysql> FLUSH PRIVILEGES;
mysql> UPDATE user SET authentication_string='7654321aA!' WHERE user='Webuser@localhost';
停止并重新启动Mysql。没有改变。同样的警告。
我在这里做错什么,如何解决呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。