Saya mencoba mengubah kata sandi root MySql.
Apa yang saya lakukan di bawah.
- Instal MySql-5.7.6 ~ .dmg (Server Komunitas) dan meja kerja.
- Matikan server pada preferensi Sistem OSX.
- Akses MySql dengan konsol. Perintahnya adalah
mysqld_safe --skip-grant
- Jalankan
update user set password=password('1111') where user='root';
dan dapatkan pesan kesalahan ->ERROR 1054 (42S22): Unknown column 'password' in 'field list'
.
FYI, saya lakukan use mysql;
. Jadi saya memang memilih permintaan pada tabel pengguna dan menemukan kolom kata sandi sebenarnya tidak ada.
Sangat aneh. Apakah mungkin tabel pengguna asli tidak memiliki kolom kata sandi?
Bagaimana saya bisa mengubah kata sandi, yang tidak ada?
Terima kasih atas jawaban Anda: D
UPDATE mysql.user SET authentication_string= 'password' WHERE User = 'root';
Karena bidang 'Kata Sandi' telah dihapus oleh mysql dan diganti dengan authentication_string. Catatan: bahwa fungsi mysql PASSWORD ('password') bergantung pada algoritma MD5 yang telah diretas sejak lama menggunakan serangan hari kelahiran. Jadi menggunakannya memberikan rasa aman yang salah karena penyerang dapat menempelkan hash yang dihasilkannya di situs web publik seperti hashkiller.co.uk/md5-decrypter.aspx dan mengambil kata sandi teks biasa Anda.Jawaban:
Di MySQL 5.7, bidang kata sandi di bidang tabel mysql.user telah dihapus, sekarang nama bidangnya adalah 'authentication_string'.
Pertama-tama pilih database:
Dan kemudian tunjukkan tabel:
Anda akan menemukan tabel pengguna, sekarang mari kita lihat isinya:
Kejutan! Tidak ada bidang bernama 'kata sandi', bidang kata sandi bernama 'otentikasi_string'. Jadi, lakukan saja ini:
Sekarang, semuanya akan beres.
Dibandingkan dengan MySQL 5.6, perubahannya cukup luas: Apa yang Baru di MySQL 5.7
sumber
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Kesalahan ini terjadi jika Anda tidak mengatur kata sandi saat instalasi, dalam hal ini mysql menggunakan plugin unix-socket .
Tetapi jika menghapus tautan plugin dari pengaturan (tabel mysql.user) akan ada masalah lain. Ini tidak memperbaiki masalah dan menciptakan masalah lain. Untuk memperbaiki tautan yang dihapus dan mengatur kata sandi ("PWD") lakukan:
1) Jalankan dengan
--skip-grant-tables
seperti yang dikatakan di atas.Jika doesnt bekerja kemudian menambahkan string
skip-grant-tables
pada bagian[mysqld]
dari/etc/mysql/mysql.conf.d/mysqld.cnf
. Lalu lakukansudo service mysql restart
.2) Jalankan
mysql -u root -p
, lalu (ubah "PWD"):kemudian
sudo service mysql restart
. Periksa:mysql -u root -p
.Sebelum
restart
menghapus string itu dari file mysqld.cnf, jika Anda mengaturnya di sana.sumber
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("MYNEWPASSWORD"), plugin="mysql_native_password"
Salah satu perangkap saya jatuh ke dalam adalah tidak ada bidang kata sandi sekarang, itu telah diubah namanya jadi:
update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';
Seharusnya sekarang:
update user set authentication_string=password('YOURPASSWORDHERE') where user='root';
sumber
Gunakan
ALTER USER
perintah daripada mencoba memperbarui satuUSER
baris. Perlu diingat bahwa mungkin ada lebih dari satu pengguna 'root', karena entitas pengguna juga memenuhi syarat oleh mesin dari mana mereka terhubunghttps://dev.mysql.com/doc/refman/5.7/en/alter-user.html
Sebagai contoh.
sumber
Itu hanya bekerja dengan saya ketika saya "memerah" setelah perintah yang disebutkan di sini. Berikut daftar lengkap perintah yang saya gunakan:
Jawaban sebelumnya mungkin tidak berfungsi untuk versi mysql nanti. Coba langkah-langkah ini jika jawaban sebelumnya tidak berhasil untuk Anda:
1- Klik pada ikon wamp> mysql> mysql console
2- tulis perintah berikut, satu per satu
sumber
Terima kasih untuk bantuannya. Untuk berjaga-jaga jika orang masih mengalami masalah, coba ini.
Untuk MySQL versi 5.6 ke bawah
Apakah Anda lupa kata sandi 'ROOT' Mac OS X dan perlu mengatur ulang? Ikuti 4 langkah sederhana ini:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
Untuk MySQL versi 5.7 ke atas
'System Prefrences' > MySQL > 'Stop MySQL Server'
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
sumber
Untuk masalah ini, saya menggunakan metode yang sederhana dan kasar, mengubah nama nama bidang menjadi kata sandi, alasannya adalah karena saya menggunakan perangkat lunak mac navicat dalam kesalahan operasi visual: 'Kata sandi' kolom tidak dikenal di 'daftar bidang', perangkat lunak itu sendiri menggunakan kata sandi sehingga saya tidak bisa dengan mudah beroperasi. Oleh karena itu, saya root ke baris perintah basis data, jalankan
Dan kemudian memodifikasi nama bidang:
Lagipula normal.
sumber
Root Cause: root tidak memiliki kata sandi, dan pernyataan python connect Anda harus mencerminkan hal itu.
Untuk mengatasi kesalahan 1698, ubah kata sandi sambung python Anda ke ''.
catatan: memperbarui kata sandi pengguna secara manual tidak akan menyelesaikan masalah, Anda masih akan mendapatkan kesalahan 1698
sumber
ingat kata sandi perlu diatur lebih lanjut bahkan setelah me-restart mysql seperti di bawah ini
sumber