Apakah yang perlu saya lakukan jika jadual pengguna mysql hilang?

藏色散人
Lepaskan: 2021-12-28 10:00:06
asal
6945 orang telah melayarinya

Penyelesaian kepada masalah bahawa jadual pengguna mysql hilang: 1. Tambahkan "skip-grant-tables" ke "[mysqld]" 2. Edit fail konfigurasi my.cnf dan tambah "sql_mode=NO_ENGINE_SUBSTITUTION"; "; 3. , Mulakan semula perkhidmatan mysql.

Apakah yang perlu saya lakukan jika jadual pengguna mysql hilang?

Persekitaran pengendalian artikel ini: sistem Windows 7, mysql versi 5.5, komputer Dell G3.

Apakah yang perlu saya lakukan jika jadual pengguna mysql hilang?

mysql Terlupa kata laluan, set semula kata laluan, penyelesaian kepada jadual pengguna mysql kosong:

1. Ada pengguna dalam jadual pengguna, tukar kata laluan terus

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Salin selepas log masuk

Ubah suai fail konfigurasi mysql my.cnf:

vim /etc/my.cnf
Salin selepas log masuk

Tambah

skip-grant-tables
Salin selepas log masuk

dalam [mysqld] untuk memulakan semula perkhidmatan mysql, log masuk terus dengan kata laluan kosong , tanya jadual pengguna, dan dapatkan hasil Kemudian ubah suai mengikut langkah berikut Jika hasilnya kosong, penyelesaian terakhir ialah

mysql> select Host,User,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| Host      | User          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| %         | root          | *6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
Salin selepas log masuk

Ubah suai kata laluan pengguna yang sepadan

# 重置密码为 123456
mysql> update mysql.user set authentication_string=password('123456') where user='root' 
Query OK, 2 rows affected, 1 warning (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 1

# 刷新权限,使配置生效
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# 退出
mysql> quit
Bye
Salin selepas log masuk
.

Batalkan atau ulas pilihan langkau yang ditambahkan dalam fail konfigurasi my.cnf -grant-tables, mulakan semula perkhidmatan mysql dan panggilnya sehari.

2. Jika jadual pengguna tidak mempunyai data, anda perlu memasukkan data pengguna

mysql> select Host,User,authentication_string from mysql.user;
Empty set (0.00 sec)
# 退出登陆
mysql> exit
Bye
Salin selepas log masuk

Edit fail konfigurasi my.cnf dan tambah atau ubah suai dua item berikut (saya tidak' t mempunyai item sql_mode):

sql_mode=NO_ENGINE_SUBSTITUTION
skip-grant-tables
Salin selepas log masuk
  • Hentikan perkhidmatan mysql dan mulakan mod selamat pangkalan data: mysqld_safe &
  • Gunakan kata laluan kosong root untuk menyambung ke pangkalan data: mysql -uroot -p

Masukkan data pengguna Root

mysql> insert into mysql.user(Host,User,authentication_string) values("%","root",password("123456")); 
Query OK, 1 row affected, 4 warnings (0.00 sec)
Salin selepas log masuk

Tanya jadual mysql.user sekali lagi dan ralat akan dilaporkan

mysql> select Host,User,authentication_string from mysql.user;
ERROR 1194 (HY000): Table 'user' is marked as crashed and should be repaired
Salin selepas log masuk

Perlu untuk membaiki jadual mysql.user

mysql> REPAIR TABLE mysql.user;
+------------+--------+----------+-------------------------------------------------+
| Table      | Op     | Msg_type | Msg_text                                        |
+------------+--------+----------+-------------------------------------------------+
| mysql.user | repair | info     | Wrong bytesec: 113-108- 95 at 396; Skipped      |
| mysql.user | repair | info     | Found block that points outside data file at 32 |
| mysql.user | repair | info     | Found block that points outside data file at 36 |
| mysql.user | repair | info     | Found block that points outside data file at 40 |
| mysql.user | repair | info     | Found block that points outside data file at 44 |
| mysql.user | repair | info     | Found block that points outside data file at 48 |
| mysql.user | repair | info     | Found block that points outside data file at 52 |
| mysql.user | repair | info     | Found block that points outside data file at 56 |
| mysql.user | repair | info     | Found block that points outside data file at 60 |
| mysql.user | repair | warning  | Number of rows changed from 4 to 3              |
| mysql.user | repair | status   | OK                                              |
+------------+--------+----------+-------------------------------------------------+
11 rows in set (0.64 sec)

# 再次查询user表
mysql> select Host,User,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| Host      | User          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| %         | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+
3 rows in set (0.00 sec)
Salin selepas log masuk

Ubah suai kebenaran pengguna root :

  update mysql.user set
     `Select_priv` = 'Y',
   `Insert_priv` = 'Y',
   `Update_priv` = 'Y',
   `Delete_priv` = 'Y',
   `Create_priv` = 'Y',
   `Drop_priv` = 'Y',
   `Reload_priv` = 'Y',
   `Shutdown_priv` = 'Y',
   `Process_priv` = 'Y',
   `File_priv` = 'Y',
   `Grant_priv` = 'Y',
   `References_priv` = 'Y',
   `Index_priv` = 'Y',
   `Alter_priv` = 'Y',
   `Show_db_priv` = 'Y',
   `Super_priv` = 'Y',
   `Create_tmp_table_priv` = 'Y',
   `Lock_tables_priv` = 'Y',
   `Execute_priv` = 'Y',
   `Repl_slave_priv` = 'Y',
   `Repl_client_priv` = 'Y',
   `Create_view_priv` = 'Y',
   `Show_view_priv` = 'Y',
   `Create_routine_priv` = 'Y',
   `Alter_routine_priv` = 'Y',
   `Create_user_priv` = 'Y',
   `Event_priv` = 'Y',
   `Trigger_priv` = 'Y',
   `Create_tablespace_priv` = 'Y'
   where user='root';
# 更新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出登陆
mysql> exit
Bye
Salin selepas log masuk
  • Keluar mysql dan pulihkan pengubahsuaian pada fail konfigurasi my.cnf
  • Tamatkan proses mysqld_safe: pkill mysql
  • Mulakan perkhidmatan mysql: systemctl start mysql
    Masalah selesai!

Pembelajaran yang disyorkan: "tutorial video mysql"

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika jadual pengguna mysql hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan