Atur ulang kata sandi root MySQL menggunakan pernyataan ALTER USER setelah menginstal pada Mac

184

Saya baru mengenal seluruh pengalaman Mac. Saya baru-baru ini menginstal MySQL dan sepertinya saya harus mengatur ulang kata sandi setelah menginstal. Itu tidak akan membiarkan saya melakukan hal lain.

Sekarang saya sudah mereset kata sandi dengan cara biasa:

update user set password = password('XXX') where user = root;

(BTW: butuh waktu lama bagi saya untuk mengetahui bahwa MySQL karena alasan yang aneh telah mengubah nama bidang 'kata sandi' menjadi 'otentikasi_string'. Saya cukup kesal dengan perubahan seperti itu.)

Sayangnya sepertinya saya perlu mengubah kata sandi dengan cara berbeda yang tidak saya ketahui. Mungkin seseorang di sini sudah menemukan masalah itu?

dengar81
sumber

Jawaban:

508

Jika ini BUKAN kali pertama Anda mengatur kata sandi, coba metode ini:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

Dan jika Anda mendapatkan kesalahan berikut, ada kemungkinan besar Anda tidak pernah mengatur kata sandi Anda sebelumnya:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Untuk mengatur kata sandi Anda untuk pertama kalinya :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Referensi: https://dev.mysql.com/doc/refman/5.6/id/alter-user.html

Madmint
sumber
10
Terima kasih! Pesan kesalahan yang sangat membingungkan dari MySQL!
Ed.
1
Ini berhasil bagi saya mysql-5.7.13-osx10.11-x86_64
GiriB
1
Setelah 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', saya mendapatkan kesalahan berikut: 'ERROR 29 (HY000): File' ./mysql/user.MYD 'tidak ditemukan (Errcode: 2 - Tidak ada file atau direktori) '. Adakah yang bisa membantu saya?
Ray Kim
4
Anda akan mencatat bahwa bertentangan dengan apa yang disarankan oleh MySQL, Anda tidak menggunakan pernyataan "ALTER USER", tetapi hanya "SET PASSWORD" ...
Fabien Haddadi
1
Contoh pertama berpotensi mencoba menetapkan kata sandi untuk pengguna lain daripada yang Anda gunakan saat mengirimkan baris itu. Yang kedua mencoba mengatur kata sandi untuk pengguna yang Anda gunakan untuk masuk ke mysql. Demikianlah nantinya bekerja.
Hafenkranich
130

Jika Anda mulai menggunakan mysql mysql -u root -p

Mencoba ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Sumber: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

shnraj
sumber
1
Terima kasih! Ini berhasil untuk saya! Saya menggunakan mysql-5.7.11-osx10.10-x86_64.
LeArNr
Ini berhasil; Terima kasih! Saya sangat sedih bahwa meskipun MySQL adalah program yang banyak digunakan, tidak ada dokumentasi satu atap untuk menginstal dan membuatnya berjalan cepat.
Shatu
Terima kasih! Itu membantu saya
Sparw
3
Setelah banyak frustrasi, varian ini bekerja pada mint 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve
Satu juta terima kasih. Itulah satu-satunya hal yang berhasil bagi saya.
RandyMy
33

Saya memiliki masalah yang sama pada Mac

Pertama, login mysql dengan mode sandbox

mysql -u <user> -p --connect-expired-password

Kemudian, atur kata sandi

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXXX');

Query OK, 0 rows affected, 1 warning (0.01 sec)

Ini bekerja untukku ~

via: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde

Ezio Shiki
sumber
1
Tampaknya cukup rumit mengingat bahwa Anda harus melakukan ini bahkan sebelum menggunakan database sama sekali.
seba.wagner
dalam peringatan itu Anda ingin menggunakanSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray
22

Jika Anda menggunakan MySQL 5.7.6 dan yang lebih baru:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Jika Anda menggunakan MySQL 5.7.5 dan sebelumnya:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Dokumentasi MySQL

Johel Alvarez
sumber
1
Saya menggunakan MySQL 5.7.9 dan yang aneh SET PASSWORD = PASSWORD('my_pass')berhasil bagi saya. Ada komentar dari orang-orang dengan versi yang lebih baru yang menyebutkan bahwa pernyataan ini juga berlaku untuk mereka. Meskipun demikian, saya meningkatkan jawaban Anda karena Anda menemukan referensi khusus ini dalam dokumen MySQL yang tidak ada yang disebutkan sebelumnya.
Armfoot
MySQL 8 SET PASSWORD melempar dan salah. ALTER USER berfungsi.
Timar Ivo Batis
13

Di MySQL 5.7.x Anda harus beralih ke kata sandi asli untuk dapat mengubahnya, seperti:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
sumber
11

Jalankan ini:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Lalu lari

./mysql -u root

Seharusnya login. Sekarang jalankan FLUSH privilege;

Kemudian keluar dari konsol MySQL dan coba masuk. Jika itu tidak berhasil jalankan ini:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Ubah xxxxxx untuk memasukkan kata sandi baru Anda. Kemudian coba masuk lagi.

Memperbarui. Lihat ini http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Itu harus menyelesaikan masalah Anda.

Jika Anda berada di oracle coba ini

ALTER USER username IDENTIFIED BY password

sumber
Tidak, maaf ini juga tidak berhasil. Setidaknya tidak lagi. Kolom 'kata sandi' telah diubah namanya oleh Oracle, btw. Sekarang disebut authentication_string. Tetapi saya tidak dapat menjalankan perintah ini, karena saya pertama-tama harus mengubah kata sandi menggunakan perintah ALTER USER. Ini membuat frustrasi luar biasa, karena itu bukan cara Anda secara tradisional akan memperbarui kata sandi. ALTER harus disediakan untuk tabel, fungsi dan hal-hal, tidak mengubah entri dalam tabel. Itu pernyataan Pembaruan. (sorry to rant)
dengar81
@Shivan Paw: Dua peringatan yang saya harapkan: mysqladmin: [Peringatan] Menggunakan kata sandi pada antarmuka baris perintah bisa menjadi tidak aman. Peringatan: Karena kata sandi akan dikirim ke server dalam teks biasa, gunakan koneksi ssl untuk memastikan keamanan kata sandi. - Saya akan mempertimbangkan bahwa kata sandi diperbarui. Dan memang saya bisa masuk dengan kata sandi baru. Namun, saya masih tidak dapat menjalankan kueri apa pun, karena saya perlu memperbarui kata sandi dengan perintah ALTER USER :(.
dengar81
@Shivan Paw: Coba apa? Saya sudah mencoba menggunakan perintah yang Anda sarankan. Mengatur ulang kata sandi menggunakan perintah ./mysqladmin (dua peringatan) dan kemudian melanjutkan untuk menjalankan pembaruan di mysql.user ... Perintah kedua gagal dengan pesan "Anda harus mengatur ulang kata sandi menggunakan ALTER USER [...]"
dengar81
Ini adalah satu-satunya solusi yang berhasil untuk saya. jika Anda memiliki kata sandi yang kedaluwarsa dalam versi terbaru mysql, kata sandi tersebut tidak akan membiarkan Anda ALTER_USER atau SET_PASSWORD.
Aaron Henderson
7

Mungkin mencobanya?

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXX');

atau

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

Tergantung pada akses yang Anda gunakan.

(dan tidak yakin Anda harus mengubah nama bidang sendiri ...)

https://dev.mysql.com/doc/refman/5.0/id/set-password.html

Mateo Barahona
sumber
Maaf, ini tidak berfungsi: ERROR 1820 (HY000): Anda harus mengatur ulang kata sandi Anda menggunakan pernyataan ALTER USER sebelum menjalankan pernyataan ini.
dengar81
7

ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI OLEH 'new_password';

Gunakan baris ini ...

Manoj Behera
sumber
7

UPDATE user SET authentication_string = PASSWORD ("MyPassWord") WHERE User = 'root'; GALAT 1064 (42000): Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat '("MyPassWord") WHERE User =' root '' pada baris 1

Diselesaikan dengan

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Referensi dari situs di bawah ini

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

Siddharth Pandey
sumber
5

Pada Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), saya masuk sebagai: mysql -uroot -plalu mengetikkan kata sandi yang dihasilkan oleh MySQL ketika Anda menginstalnya. Kemudian..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Contoh:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

Dan Anda bisa mengetikkan 'Ab1234'

Kenny Alvizuris
sumber
3

Mysql 5.7.24 dapatkan login root terlebih dahulu

langkah 1: dapatkan kata sandi dari log

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

langkah 2: masuk bersamanya ke mysql

mysql -uroot -p'wHkJHUxeR4)w'

langkah 3: Anda memasukkan kata sandi root baru

SET PASSWORD = PASSWORD('xxxxx');

Anda mendapatkan ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

bagaimana cara memperbaikinya?

jalankan ini SET GLOBAL validate_password_policy=LOW;

Coba lagi SET PASSWORD = PASSWORD('xxxxx');

Robert A
sumber
2

Inilah cara kerjanya untuk saya.

mysql> show databases ;

ERROR 1820 (HY000): Anda harus mengatur ulang kata sandi Anda menggunakan pernyataan ALTER USER sebelum menjalankan pernyataan ini.

mysql> uninstall plugin validate_password;

ERROR 1820 (HY000): Anda harus mengatur ulang kata sandi Anda menggunakan pernyataan ALTER USER sebelum menjalankan pernyataan ini.

mysql> alter user 'root'@'localhost' identified by 'root';

Kueri OK, 0 baris terpengaruh (0,01 dtk)

mysql> flush privileges;

Kueri OK, 0 baris terpengaruh (0,03 dtk)

sunling90
sumber
1

Ketika Anda menggunakannya SET PASSWORD = PASSWORD('your_new_password');mungkin macet untuk itu

(ERROR 1819 (HY000): Kata sandi Anda tidak memenuhi persyaratan kebijakan saat ini)

.Anda dapat menggunakannya SET GLOBAL validate_password_policy=LOW;untuk menghisapnya.

未来 陆家嘴 顶尖 的 投资 人
sumber
1

dalam versi 5.7. bidang 'kata sandi' telah dihapus. 'Authent_string' ganti itu

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;
HUAN LIU
sumber
0

Saya juga mendapatkan masalah yang sama di mac OS X 10.10.4 (Yosemite). SET PASSWORD bekerja untuk saya. Kata sandi yang lebih baru untuk mysql- mysql> SET PASSWORD = PASSWORD ('your_password'); Kueri OK, 0 baris terpengaruh, 1 peringatan (0,01 dtk)

set variabel path lingkungan Mysql Anda di .bash_profile dan tambahkan baris
ekspor PATH = $ PATH: / usr / local / mysql / bin, setelah itu, jalankan perintah berikut: source .bash_profile

Moumita
sumber
0

Mengalami masalah setelah saya menginstal workbench mysql dan server komunitas mysql. Mendapat kata sandi yang dihasilkan selama instalasi server. Mengklik dua kali pada instance lokal yang ada di meja kerja memicu dialog di mana saya bisa mengatur kata sandi baru.

Malte
sumber
0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Itu bekerja untuk saya.

zhao
sumber
0

ingat versi 5.7.23 dan lebih tinggi - tabel pengguna tidak memiliki kata sandi kolom, bukan string otentikasi sehingga di bawah ini berfungsi saat mengatur ulang kata sandi untuk pengguna.

update user set authentication_string=password('root') where user='root';
Pravin
sumber