提问人:Ash3T 提问时间:11/13/2020 最后编辑:Ash3T 更新时间:11/15/2020 访问量:179
Mysql (HY000/1045):通过 php 访问被拒绝,但可以通过 mac 终端访问
Mysql (HY000/1045): Access denied through php but can access through mac terminal
问:
Resloved:我使用 127.0.0.1 而不是 localhost。
我在mac终端中使用用户名和密码成功访问mysql数据库globe_bank:
Ashlys-MBP:~ Ashly$ mysql -u Webuser -p globe_bank
Enter password:
mysql>
但是,我无法使用相同的用户名和密码从 php 登录。以下是浏览器中显示的警告消息:
警告:mysqli_connect():(HY000/1045):用户访问被拒绝 'webuser'@'localhost'(使用密码:YES) /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' IDENTIFIED BY '7654321aA!';
我的端口应该是 8888,我使用 MAMP,当它启动时,它显示 浏览器上的“localhost:8888/MAMP/?language=English”。
我重新启动了mysql,警告仍然存在。
实际上,还有另一条警告消息,我认为导致此警告的原因是因为我首先无法访问mysql数据库。底部显示的另一个警告是(我在上面的 php 代码上标记了第 12 行)
警告:mysqli_close() 期望参数 1 是 mysqli,给定 bool 在/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。什么都没有改变。同样的警告。
我在这里做错了什么,如何解决这个问题?
答: 暂无答案
下一个:MySQL, 修改主键列
评论
FLUSH PRIVILEGES
authentication_string
webuser
identified by