Saya tampaknya akan mampu untuk kembali membuat pengguna yang sederhana I've dihapus, bahkan sebagai root di MySQL.
Kasus saya: pengguna 'jack' ada sebelumnya, tapi saya dihapus dari mysql.pengguna dalam rangka untuk menciptakan itu. Saya tidak melihat sisa-sisa dari ini di meja itu. Jika saya menjalankan perintah ini untuk beberapa lainnya, random username, mengatakan 'jimmy', itu bekerja dengan baik (sama seperti semula tidak untuk 'jack').
Apa yang telah saya lakukan untuk merusak pengguna 'jack' dan bagaimana saya dapat membatalkan bahwa korupsi dalam rangka untuk menciptakan kembali 'jack' sebagai pengguna yang sah untuk instalasi MySQL?
Lihat contoh di bawah ini. (Tentu saja, awalnya, ada banyak waktu antara penciptaan 'jack' dan penghapusan.)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jack | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jimmy | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
ya ini bug yang ada. Namun, saya menemukan solusi kecil.
Yang harus menyelesaikannya. Dengan asumsi kita ingin membuat user admin @ localhost, ini akan menjadi perintah:
drop user admin@localhost; flush privileges; membuat user admin@localhost diidentifikasi oleh 'admins_password'
Cheers
Mencoba melakukan FLUSH PRIVILEGES
. MySQL ini bug posting pada kesalahan kode muncul untuk melaporkan beberapa keberhasilan dalam kasus serupa dengan anda setelah pembilasan privs.
Bug ini telah duduk di bugs.mysql.com sejak tahun 2007, dan thread ini terutama hanya membeo dari semua jawaban yang salah bahkan sampai satu tahun yang lalu.
Menurut dokumentasi MySQL, perintah seperti CREATE USER
, HIBAH
, MENCABUT
, dan DROP USER
tidak memerlukan berikutnya FLUSH PRIVILEGES
perintah. It's cukup jelas mengapa, jika seseorang membaca docs. It's karena mengubah tabel MySQL secara langsung tidak reload info ke memori, namun kebanyakan solusi untuk bug ini mengklaim bahwa FLUSH PRIVILEGES
adalah jawabannya.
Ini juga mungkin tidak menjadi bug. Ini adalah dokumentasi konspirasi - docs bervariasi dalam satu tempat penting dari versi ke versi.
13.7.1.2. PENURUNAN PENGGUNA Sintaks
...
DROP USER pengguna [user] ...
...
DROP USER 'jeffrey'@'localhost';
Jika anda hanya menentukan nama pengguna bagian dari nama akun, nama host bagian dari '%' digunakan.
DROP USER
seperti yang ada di MySQL 5.0.0 hanya menghapus account yang tidak memiliki hak istimewa. Di MySQL 5.0.2, itu dimodifikasi untuk menghapus hak akses account juga. Ini berarti bahwa prosedur untuk menghapus akun tergantung pada versi dari MySQL.
Seperti MySQL 5.0.2, anda dapat menghapus akun dan hak-hak istimewanya sebagai berikut:
DROP USER pengguna;
Pernyataan menghilangkan hak istimewa baris untuk akun dari semua hibah tabel.
Satu-satunya waktu saya mendapatkan kesalahan ini ketika saya melakukan DROP USER user
; seperti dokter menyarankan, tapi MySQL tidak mengobati '%' sebagai wildcard dalam suatu cara yang akan drop semua pengguna pada semua host. It's tidak begitu liar setelah semua. Atau, mungkin itu kadang-kadang bekerja ketika ia menghapus localhost user dan kemudian mencoba untuk menghapus satu di %.
It's jelas bagi saya bahwa ketika mencoba untuk menghapus user di %, itu masalah pesan kesalahan dan berhenti. Selanjutnya CREATE USER
di localhost akan gagal karena localhost user tidak pernah dihapus. Tampaknya ada tidak perlu membuang waktu untuk menggali dalam tabel hibah mencari hantu sebagai salah satu poster yang disarankan.
Saya melihat 7 suara untuk:
DROP USER 'jack@localhost'; // benar-benar menghapus akun
Yang diartikan sebagai DROP USER 'jack@localhost'@'%';
# salah
Ada benar-benar tampaknya menjadi nyata bug yang menghasilkan pesan kesalahan yang sama, tapi ini harus dilakukan dengan terlebih dahulu dibuat pengguna (setelah mysql server install) menjadi turun. Apakah itu bug telah diperbaiki, I don't tahu; tapi aku don't ingat yang terjadi akhir-akhir ini dan aku'm hingga ver 5.5.27 saat ini.
Jika anda menggunakan statement DELETE
pada mysql.pengguna
tabel dalam upaya untuk menghapus pengguna, maka upaya untuk membangun kembali pengguna dengan MEMBUAT PENGGUNA
, anda akan mendapatkan 1396
kesalahan. Menyingkirkan kesalahan ini dengan menjalankan DROP USER 'nama'@'host';
DELETE
FROM mysql.user
WHERE user = 'jack';
(Anda akan mendapatkan 1396 kesalahan jika anda mencoba untuk menciptakan kembali jack)
CREATE USER 'jack'@'localhost' IDENTIFIED BY PASSWORD '*Fi47ytFF3CD5B14E7EjkjkkC1D3F8086A5C0-krn';
(Keluar dari situasi ini dengan menjalankan DROP USER
)
DROP USER 'jack'@'localhost';
(Saya kira FLUSH PRIVILEGES
dapat't menyakiti, tapi yang pasti drop pengguna pertama.)
Seharusnya kau't dapat secara manual menghapus pengguna dengan cara itu. MySQL memiliki MENCABUT
sintaks untuk menghapus hak-hak istimewa dan DROP USER
untuk menghapus mereka:
REVOKE priv1,priv2,priv3,etc... FROM 'jack@localhost'; // remove certain privileges
DROP USER 'jack@localhost'; // completely delete the account
Terbaik untuk menggunakan alat-alat yang disediakan daripada penyia-nyiaan waktu di latar belakang.
Di MySQL 5.6 menggunakan Drop user id;
tidak bekerja. Penggunaan: Drop user 'id'@'localhost';
dan/atau Drop user 'id'@'%';
. Dengan cara ini saya bisa drop pengguna dan menciptakan itu.
two method
one :
setp 1: drop user 'jack'@'localhost';
setp 2: create user 'jack'@localhost identified by 'ddd';
two:
setp 1: delete from user where user='jack'and host='localhost';
setp 2: flush privileges;
setp 3: create user 'jack'@'localhost' identified by 'ddd';
Posting ini https://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw ini berguna. Kadang-kadang, ada seorang pengguna anonim ''@'localhost' atau ''@'127.0.0.1'. Jadi, untuk memecahkan masalah,
penurunan pertama pengguna yang 'membuat pengguna' gagal.
Membuat user baru.
Hibah yang diperlukan hak akses untuk pengguna baru.
Flush privileges.
Sederhana mengatasi masalah ini. Sebagai "hapus" perintah hanya menghapus pengguna merekam di "user" tabel "mysql" database, kita bisa menambahkan kembali dan kemudian drop pengguna sepenuhnya. Maka anda bisa membuat user dengan nama yang sama.
Langkah 1. menemukan format record dari tabel user di database mysql
use mysql;
select * from user;
Langkah 2. Menurut kolom menunjukkan dalam langkah 1, membuat boneka rekam dengan nama pengguna. Masukkan ke dalam tabel, misalnya, diingatkan untuk mengganti "username" dengan username anda.
Insert into user value ('%','username','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','','','','','0','0','0',
'0','mysql_native_password',
'*52C5E3AC6BC5E2E0BFF86978BF62A1481AC79D58','N',
'2016-12-10 23:59:12',null,'N');
Catatan: kadang-kadang anda mungkin mengalami masalah dalam memasukkan, hanya mengubah data untuk membuatnya bekerja.
Langkah 3. Penurunan pengguna.
drop user username;
Sekarang anda dapat membuat user dengan nama yang sama.
Aku tahu ini sudah tua, tapi karena itu adalah hasil pertama di Google saya pikir saya harus menambahkan solusi saya. Dalam kasus saya menjatuhkan pengguna bekerja dengan baik, tapi menciptakan pengguna memberi saya "KESALAHAN 2013 (HY000): Lost connection MySQL server query" dan "KESALAHAN 2006 (HY000): MySQL server telah pergi." saya mencoba flush privileges -> drop pengguna solusi, tetapi masih memiliki kesalahan yang sama.
Dalam kasus saya, kesalahan itu terjadi karena mysql upgrade dari 5,1 -> 5.6. Melihat error log, saya menyadari bahwa ia mengatakan untuk menjalankan mysql_upgrade. Melakukan itu dan saya membuat user pernyataan bekerja dengan baik!