我在任何地方都无法在Google上找到答案(由于SEO和英语的性质,我不能问正确的问题,因为我不是本地人)
我将尝试尽可能简单地进行解释: 我得到了回应: 这正常吗?服务器遭到黑客入侵后,我从头开始重建它,并使用与以前相同的设置重新安装了mariadb,但我不记得这是否正常。
MariaDB版本是:
我有一个非常大的数据库(超过4GB),并且由于错误2013(例如“查询期间与MySQL服务器的连接丢失”)而无法对其进行单个查询,因此我试图缩小故障原因。在问题上苦苦挣扎了5天,我没有选择的余地,所以很好奇这是否与问题有关。 答案 0 :(得分:5) 在他们的文档中不清楚,但它似乎是用户密码的常规初始字符串: https://mariadb.com/kb/en/authentication-from-mariadb-104/ ...最初设置的密码无效,因此,为了进行这种身份验证,必须使用SET PASSWORD设置密码。 稍后在同一页面中: ...旧的身份验证方法(传统的MariaDB密码)仍然可用。默认情况下,它是禁用的(“ invalid”不是有效的密码哈希),但是可以使用通常的SET PASSWORD语句设置密码。 使用字符串“ invalid”代替合法的哈希字符串,因为您输入的任何密码都不可能被哈希并导致字符串“ invalid”。该字符串甚至都不是哈希结果的正确长度。另外,它包含的字符不是有效的十六进制数字。 实际上,可以存储任何其他单词或短语来代替“无效”一词,这正是开发人员选择使用的语言。 请注意,这种在密码哈希字段中存储非哈希字符串的技巧在MySQL 5.7中不起作用。我曾经在MySQL 5.6中看到过这种技巧,但是当我们升级到MySQL 5.7时,除非是有效的哈希字符串,否则它不会在该位置接受字符串。 答案 1 :(得分:0) 简短答案: 您的用户凭据没有任何问题,除非您没有充分的理由不需要更改密码。 详细答案: 从MariaDB 10.4.3开始,使用unix套接字进行连接(连接到localhost而不指定TCP端口)的默认身份验证方法是 unix_socket身份验证。 Unix套接字身份验证不再需要密码: 当客户端打开与服务器的连接时,服务器将检查打开套接字连接的进程的uid,并检索与uid关联的用户名。 此身份验证方法的主要优点是客户端不需要任何附加插件,因此所有数据库驱动程序将立即支持此身份验证方法。
Future<void> resultData() async {
List<User> users = await dbHelper.getUser();
setState(() {
data = users.where((user) => user.type == "student");
});
}
use mysql;
select user,host,password from mysql.user;
+---------+-----------+-------------------------------------------+
| User | Host | Password |
+---------+-----------+-------------------------------------------+
| root | localhost | *5298BA3BC4092F7B664B1A71FE173FBA4F8C6BA1 |
| mysql | localhost | invalid |
2 个答案: