php页面密码错误,PHP插入错误的密码

我试图在PHP7.0的运行时创建一个mysql用户帐户,授予对单个数据库的访问权限,该数据库也在运行时创建.

我目前正在使用:

$this->mysqli = new mysqli('localhost', $admin_account, $password);

$setup = [

/* create database */

sprintf('CREATE DATABASE IF NOT EXISTS %s;', $dbName),

/* grant admin */

sprintf("GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' WITH GRANT OPTION;", $dbName, $admin_account, $admins_remote_ip),

/* add user */

sprintf("CREATE USER '%s'@'localhost' IDENTIFIED BY '%s';", $dbUsername, $dbPassword),

/* THIS WAS ADDED AS A FIX TO NO AVAIL */

sprintf("UPDATE mysql.user SET password=PASSWORD('%s') WHERE user='%s'", $dbPassword, $dbUsername),

/* grant retailer*/

sprintf("GRANT ALL PRIVILEGES ON %s.* TO '%s'@'localhost';", $dbName, $dbUsername),

/* flush */

"FLUSH PRIVILEGES;",

];

foreach ($setup as $query) {

if (false == $this->mysqli->query($query)) {

$error = $this->mysqli->error;

return $error;

}

}

所有语句执行都没有错误,所有内容似乎都在应有的位置,但是非管理员用户会遇到mysql-> error;

Connect failed: Access denied for user ‘dbUsername’@’localhost’ (using password: YES)

如果我这样做;

> mysql -u admin_account -p

update mysql.user set password=PASSWORD('dbPassword') where user='dbUsername';

然后连接正常,一切都很好.

请帮忙.

*编辑:我已经删除了交易行为,将它从实时代码中删除并不能解决问题.看来密码字符串在PHP和MySQL之间被更改了吗?

解决方法:

通常,事务控制命令与DML命令一起使用,例如-INSERT,UPDATE和DELETE.如果在创建表或删除表时使用它们,则结果可能取决于自动提交模式.默认情况下,mysql自动将更改永久提交到database.

您还将在MySQL Internals Manual中发现带有非事务引擎的DDL语句和操作未在事务列表中“注册”.检查您正在使用的引擎(InnoDB或MyISAM).

START TRANSACTION;

CREATE DATABASE IF NOT EXISTS StackOverflow;

GRANT ALL PRIVILEGES ON StackOverflow.* TO 'admin'@'%' WITH GRANT OPTION;

CREATE USER 'customer'@'localhost' IDENTIFIED BY 'customer';

GRANT ALL PRIVILEGES ON StackOverflow.* TO 'customer'@'localhost';

COMMIT;

FLUSH PRIVILEGES;

在表mysql.user中,“客户”已创建,没有权限.

在mysql.db表中,已使用权限创建了“客户”和“管理员”.

标签:user-permissions,mysql,php,mysql,database,sql

来源: https://codeday.me/bug/20191211/2106705.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP中,要在注册页面插入数据,可以按照以下步骤进行操作: 1. 创建一个HTML表单,在表单中包含用户输入的必要字段,例如用户名、密码、电子邮件等。 2. 在PHP脚本中,使用POST方法获取表单中的数据。例如使用`$_POST['username']`获取用户名,`$_POST['password']`获取密码,以此类推。 3. 对用户输入的数据进行验证,确保数据的有效性。可以使用内置的函数或者自定义的验证函数。例如可以使用`filter_var()`函数验证电子邮件的有效性。 4. 如果输入数据有效,连接到数据库。可以使用内置的MySQLi或PDO扩展,或者其他数据库操作库来实现。 5. 在数据库中创建一个用户表,包含必要的字段,例如用户名、密码、电子邮件等。 6. 使用SQL INSERT语句将用户输入的数据插入到用户表中。可以使用绑定参数来避免SQL注入攻击。例如,可以使用类似以下的代码来插入数据: ``` $sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param("sss", $username, $password, $email); $stmt->execute(); ``` 7. 如果插入成功,返回注册成功信息给用户,并且可以进行其他操作,例如发送确认电子邮件等。 8. 如果插入失败,返回注册失败信息给用户,可以在页面上显示错误信息或者记录日志。 以上是一个基本的php注册页面插入数据的过程,可以根据具体需求进行相应的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值