欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決mysql報(bào)錯(cuò)You must reset your password using ALTER USER statement before executing this statement問(wèn)題

 更新時(shí)間:2024年11月21日 15:47:40   作者:蝸牛去旅行吧  
文章介紹了在Linux系統(tǒng)中解決MySQL 5.7及以上版本root用戶密碼過(guò)期無(wú)法登錄的問(wèn)題方法,以及如何處理系統(tǒng)權(quán)限表mysql.user結(jié)構(gòu)錯(cuò)誤的問(wèn)題

mysql報(bào)錯(cuò)You must reset your password using ALTER USER statement before executing this statement

在 linux 中安裝好 MySQL 并完成初始化配置后,使用默認(rèn)生成的 root 用戶密碼登錄 MySQL 時(shí),可能會(huì)出現(xiàn)無(wú)法執(zhí)行任何語(yǔ)句的情況

提示:

「You must reset your password using ALTER USER statement before executing this statement」

這是因?yàn)?MySQL 5.7 版本后,用戶表的密碼字段由 password 改為了 authentication_string,同時(shí)增加了一個(gè) password_expired 字段來(lái)標(biāo)識(shí)密碼是否過(guò)期。

對(duì)于 root 用戶密碼過(guò)期的情況

通過(guò)以下步驟來(lái)修改root用戶的密碼

1. 停止所有的 MySQL 進(jìn)程。使用命令 `service mysql stop` 或 `killall mysql` 

2. 使用無(wú)驗(yàn)證模式啟動(dòng) MySQL。執(zhí)行命令 `mysqld_safe --skip-grant-tables`

3. 使用 MySQL 客戶端登錄無(wú)需密碼。此時(shí)可以執(zhí)行任何語(yǔ)句。

4. 檢查用戶表,使用 `select * from mysql.user;`來(lái)查看用戶詳情。

5. 修改 root 用戶的密碼到期標(biāo)識(shí)和密碼。

6. 使用語(yǔ)句:

`update mysql.user set authentication_string=password('yourpassword'), password_expired='N' where user='root';` 

執(zhí)行 `flush privileges;`刷新 privileges 表。

查看結(jié)果

select authentication_string,password_expired from user where user='root';

8. 重新使用正常模式啟動(dòng) MySQL 服務(wù)。執(zhí)行 `service mysql start`

9. 使用新設(shè)置的 root 密碼登錄 MySQL 客戶端進(jìn)行操作。

以上步驟可以很方便地解決 MySQL 中 root 密碼過(guò)期無(wú)法登錄的問(wèn)題。

重置密碼后需要更新整個(gè)項(xiàng)目中的連接配置,以確保正常訪問(wèn)數(shù)據(jù)庫(kù)。

也可以調(diào)整my.cnf

#設(shè)置密碼過(guò)期時(shí)間為120天,設(shè)為0表示不過(guò)期
#default_password_lifetime = 120
default_password_lifetime = 0
#修改密碼強(qiáng)度策略,0為低策略
#validate_password_policy=0
#修改密碼長(zhǎng)度
#validate_password_length=5
#跳過(guò)密碼校驗(yàn),無(wú)密碼登錄
#skip-grant-tables

其他報(bào)錯(cuò)處理:

ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

這個(gè)錯(cuò)誤表示MySQL的系統(tǒng)權(quán)限表mysql.user結(jié)構(gòu)與MySQL服務(wù)器預(yù)期的不匹配,可能是由于不兼容的升級(jí)或錯(cuò)誤的操作導(dǎo)致該系統(tǒng)表被破壞。

解決方案有以下幾種

1.嘗試用mysqld自帶的修復(fù)模式先修復(fù)表結(jié)構(gòu):

mysqld --defaults-file=/etc/my.cnf --skip-grant-tables --user=mysql --skip-networking --safe-mode &

進(jìn)入安全模式后,執(zhí)行:

mysql> USE mysql;
mysql> REPAIR TABLE user;

如果能順利修復(fù),則重啟正常模式的mysqld服務(wù)器并登錄檢查。

2.如果上述修復(fù)沒(méi)有效果

可以嘗試重建mysql.user表:

mysqldump --add-drop-table --no-data mysql user > user.sql

退出,刪除mysql.user表:

DROP TABLE mysql.user;

然后重建:

SOURCE user.sql;

3.如果以上兩種方式仍然無(wú)法修復(fù)

則可以嘗試重新初始化MySQL數(shù)據(jù)目錄:

mysqld --defaults-file=/etc/my.cnf --initialize-insecure

這將移除所有數(shù)據(jù)重新初始化,之后需要重新導(dǎo)入數(shù)據(jù)。

4.最后的緊急情況下可以選擇完全卸載重裝MySQL服務(wù)器。

在修復(fù)過(guò)程中務(wù)必對(duì)現(xiàn)有數(shù)據(jù)做好備份。

修復(fù)表結(jié)構(gòu)本質(zhì)上是對(duì)表重建,如果有數(shù)據(jù)損壞可能導(dǎo)致部分?jǐn)?shù)據(jù)丟失。

如果不行的話,可以考慮用之前的備份重建。

產(chǎn)生這個(gè)錯(cuò)誤一般是由于MySQL版本升級(jí),權(quán)限表結(jié)構(gòu)發(fā)生變化,手動(dòng)操作錯(cuò)誤等導(dǎo)致。

我們需要格外小心謹(jǐn)慎操作系統(tǒng)權(quán)限表。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql日志文件在哪 如何修改MySQL日志文件位置

    mysql日志文件在哪 如何修改MySQL日志文件位置

    MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面介紹如何修改MySQL日志文件位置,需要的朋友可以參考下
    2012-12-12
  • 微信昵稱(chēng)帶符號(hào)導(dǎo)致插入MySQL數(shù)據(jù)庫(kù)時(shí)出錯(cuò)的解決方案

    微信昵稱(chēng)帶符號(hào)導(dǎo)致插入MySQL數(shù)據(jù)庫(kù)時(shí)出錯(cuò)的解決方案

    Mysql的utf8編碼最多3個(gè)字節(jié),而Emoji表情或者某些特殊字符是4個(gè)字節(jié),所以會(huì)導(dǎo)致帶有表情的昵稱(chēng)插入數(shù)據(jù)庫(kù)時(shí)出錯(cuò),下面給大家分享下解決方案,需要的朋友參考下吧
    2016-12-12
  • MySQL的prepare使用及遇到bug解析過(guò)程

    MySQL的prepare使用及遇到bug解析過(guò)程

    在一次開(kāi)發(fā)中使用 MySQL PREPARE 以后,從 prepare 直接取 name 賦值給 lex->prepared_stmt_name 然后給 EXECUTE 用,發(fā)現(xiàn)有一定概率找不到 prepare stmt 的 name,于是開(kāi)始動(dòng)手調(diào)查問(wèn)題發(fā)生的原因,本文給大家分享mysql prepare使用及問(wèn)題解決,感興趣的朋友一起看看吧
    2022-05-05
  • 詳解MySQL數(shù)據(jù)庫(kù)、表與完整性約束的定義(Create)

    詳解MySQL數(shù)據(jù)庫(kù)、表與完整性約束的定義(Create)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)、表與完整性約束的定義(Create),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • MySQL外鍵設(shè)置的方法實(shí)例

    MySQL外鍵設(shè)置的方法實(shí)例

    這篇文章主要介紹了MySQL外鍵設(shè)置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • MySQL跨表查詢(xún)與跨表更新

    MySQL跨表查詢(xún)與跨表更新

    本文主要給大家講解的是MySQL中如何使用跨表更新的方法和示例,非常的實(shí)用,有需要的小伙伴可以查看查看
    2020-02-02
  • MySQL配置文件my.cnf與my.ini的區(qū)別

    MySQL配置文件my.cnf與my.ini的區(qū)別

    在使用MySQL時(shí),我們需要對(duì)其進(jìn)行配置,以滿足我們的需求,本文主要介紹了MySQL配置文件my.cnf與my.ini的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 淺談MySQL觸發(fā)器的原理以及使用

    淺談MySQL觸發(fā)器的原理以及使用

    這篇文章主要介紹了淺談MySQL觸發(fā)器的原理以及使用,觸發(fā)器的執(zhí)行不需要使用 CALL 語(yǔ)句來(lái)調(diào)用,也不需要手工啟動(dòng),只要一個(gè)預(yù)定義的事件發(fā)生就會(huì)被 MySQL自動(dòng)調(diào)用,需要的朋友可以參考下
    2023-05-05
  • C# Mysql 查詢(xún) Rownum的解決方法

    C# Mysql 查詢(xún) Rownum的解決方法

    C# Mysql 查詢(xún) Rownum的解決方法,需要的朋友可以參考一下
    2013-03-03
  • MySQL插入json問(wèn)題

    MySQL插入json問(wèn)題

    今天小編就為大家分享一篇關(guān)于MySQL插入json問(wèn)題,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10

最新評(píng)論