Perubahan kata sandi root MySQL

101

Saya telah mencoba mengatur ulang kata sandi root MySQL saya. Saya telah menjalankan mysqld_safe --skip-grant-tables, memperbarui kata sandi root, dan memeriksa tabel pengguna untuk memastikannya ada. Setelah me-restart daemon mysql saya mencoba masuk dengan kata sandi root baru yang baru saja saya atur dan masih mendapatkan Akses ditolak karena kesalahan 'root' pengguna. Saya juga telah mencoba sepenuhnya menghapus dan menginstal ulang mysql (termasuk menghapus file my.cnf) dan masih belum berhasil. Apakah ada yang punya saran tentang apa yang dapat saya lakukan selanjutnya?

Terima kasih sebelumnya

nick
sumber
2
tolong posting kesalahan Anda yang sebenarnya
Vishwanath Dalvi
17
Jika Anda tidak terkunci SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); adalah yang paling aman.
sabgenton
Saya mengikuti langkah-langkah dalam video untuk mengubah kata sandi di salah satu server saya youtu.be/gFo5DV_pSg8
Prem
1
Versi server: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERROR 1064 (42000): Anda mengalami kesalahan dalam sintaks SQL; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang benar untuk digunakan di dekat 'PASSWORD ("1")' pada baris 1 SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ("somepassword");
murid

Jawaban:

133
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;
kta
sumber
7
Ini bekerja untuk saya di 5.7 sementara jawaban yang diterima tidak.
Stoopkid
3
Ini adalah solusi yang tepat jika kata sandi root MySQL Anda kosong.
fschuindt
4
> UPDATE mysql.user SET authentication_string = PASSWORD ('MyNewPass') WHERE user = 'root'; > HAK ISTIMEWA FLUSH; Di MySQL versi 5.7.x, tidak ada lagi kolom kata sandi di tabel mysql. Itu diganti dengan authentication_string.
Robert Anthony S. Tribiana
2
Ini memberi OK bagi saya, tetapi sebenarnya tidak melakukan apa
Freedo
1
Diperlukan perintah tambahan FLUSH PRIVILEGESuntuk membuat perubahan efektif tanpa memulai ulang server database.
NetVicious
64

lihat ini dari manual Referensi MySQL:

Pertama login mysql:

# mysql -u root -p

Kemudian pada prompt mysql jalankan:

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

Kemudian

FLUSH PRIVILEGES;

Lihat halaman ini untuk informasi lebih lanjut: Mengatur Ulang Kata Sandi Root: Sistem Unix

VSB
sumber
Saya mendapat pesan kesalahan "Anda menggunakan mode pembaruan aman dan Anda mencoba memperbarui tabel tanpa WHERE yang menggunakan kolom KUNCI ..." saat memperbarui sandi pengguna. Lihat stackoverflow.com/questions/11448068/… untuk cara mengatasi kesalahan ini.
Joe Borysko
ERROR 1064 (42000): Anda memiliki kesalahan dalam sintaks SQL; periksa manual yang sesuai dengan versi MySQL server Anda untuk sintaks hak untuk menggunakan dekat '(' MyNewPass ') MANA User =' root '' pada baris 1
discipleartem
31
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Anda dapat menemukan Mengatur Ulang Kata Sandi Root di dokumentasi MySQL.

iamfaith
sumber
Kueri ini berfungsi untuk saya tetapi kata sandi baru tidak berfungsi (Akses ditolak). Ini hanya mulai berfungsi setelah saya membuat ulang pengguna root askubuntu.com/a/784347/160368 .
hlcs
1
bekerja untuk saya di MySQL 8.0.20 dan setelah menginisialisasi folder data menggunakan perintah inimysqld --initialize --console
A. Henteti
27

Ini adalah jawaban terbaru untuk WAMP v3.0.6 dan yang lebih baru

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

Di MySQL versi 5.7.x, tidak ada lagi kolom kata sandi di tabel mysql. Itu diganti dengan authentication_string. (Ini untuk terminal / CLI)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(Ini jika untuk PHPMyAdmin atau GUI Mysql)

Robert Anthony S. Tribiana
sumber
Jawaban ini adalah salah satu dari sedikit yang mengatakan bahwa mysql.usertabel harus diperbarui. Perhatikan bahwa jika Anda menggunakan database lain (diatur oleh useperintah), Anda akan mendapatkan pesan kesalahan bahwa tabel usertidak ada. Terima kasih Pak!
Aleksandar
1
bekerja untuk saya. Saya menggunakan 5.7.x, tidak ada mysql.usertabel. jawaban lain sudah ketinggalan
zaman
Saya senang bisa membantu!!
Robert Anthony S. Tribiana
Saya memutarnya kembali karena niat saya untuk menggunakan> karena titik koma per baris yang ditujukan untuk terminal
Robert Anthony S. Tribiana
0 baris terpengaruh, baris cocok: 3 diubah: 0 ...?
trainoasis
22

Menemukannya! Saya lupa mencirikan kata sandi ketika saya mengubahnya. Saya menggunakan kueri ini untuk memecahkan masalah saya:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

Saya lupa PASSWORD('NEW PASSWORD')dan hanya memasukkan kata sandi baru dalam teks biasa

nick
sumber
pastikan Anda kembali dan menerima jawaban Anda untuk memungkinkan orang lain melihat solusinya
ghostJago
1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html menunjukkan cara melakukan ini --init-file=jika Anda melihat keluar.
sabgenton
3
Tahu mengapa ketika saya menggunakan perintah yang sama, kesalahan berikut dikembalikan? Galat 1054 (42S22): kolom tidak diketahui 'Sandi' di 'daftar bidang'
Adrian M.
1
Ada kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat '(' NEW PASSWORD ') di mana pengguna =' root '' pada baris 1
Discleartem
21

Ikuti langkah-langkah di bawah ini.

Langkah 1. hentikan mysql

Langkah 2. sudo mysqld_safe --skip-grant-tables

langkah3.mysql -u root

step4.use mysql;

step5.show tables;

step6.describe user;

step7.update user set authentication_string=password('1111') where user='root';

login dengan kata sandi 1111

Lokesh G
sumber
3
flush privilegespenting sebagai langkah terakhir.
Khom Nazid
Ini benar-benar dilakukan dengan pantat. Saya melakukan semua tutorial untuk mengatur ulang kata sandi. Semuanya berfungsi kecuali ketika saya masuk dengan kata sandi baru, itu tidak berfungsi.
Shidomaru NeveRage
jika mysqld tidak dimulai dan pesan seperti ini daemon mysqld dengan database dari / var / lib / mysql mysqld_safe mysqld dari file pid /var/run/mysqld/mysqld.pid diakhiri lakukan ini: mkdir / var / run / mysqld chomod 777 / var / run / mysqld dan mulai semua dari mengemis
jokermt235
18

Saya juga mencari-cari dan mungkin beberapa jawaban cocok untuk beberapa situasi,

situasi saya adalah Mysql 5.7 pada sistem Ubuntu 18.04.2 LTS:

(dapatkan hak akses root)

$ sudo bash

(atur kata sandi untuk pengguna db root + terapkan keamanan dalam langkah-langkah)

# mysql_secure_installation

(berikan akses ke pengguna root melalui kata sandi sebagai ganti soket)

(+ edit: tampaknya Anda perlu menyetel kata sandi lagi?)

(jangan setel ke 'mySecretPassword' !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Banyak terima kasih kepada zetacu (dan erich ) untuk jawaban luar biasa ini (setelah mencari beberapa jam ...)

Nikmati :-D

S.

Edit (2020):

Metode ini tidak berfungsi lagi, lihat pertanyaan ini untuk referensi di masa mendatang ...

Bamboomy
sumber
Ini adalah jawaban terbaik sejauh ini, setidaknya untuk server mysql 5.7.
Zoltán Hajdú
Jawaban TERBAIK. Terima kasih.
Luciano Fantuzzi
11

Di MySQL 8.0.4+

Untuk memperbarui pengguna root saat ini:

select current_user();
set password = 'new_password';

Untuk memperbarui pengguna lain:

set password for 'otherUser'@'localhost' = 'new_password';

Untuk mengatur kebijakan kata sandi sebelum memperbarui kata sandi:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Cara lain / lebih baik untuk memperbarui kata sandi root:

mysql_secure_installation

Ingin tetap menggunakan otentikasi 5.x sehingga Anda masih dapat menggunakan aplikasi lama?

Di my.cnf

default_authentication_plugin = mysql_native_password

Untuk memperbarui root:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
Carlito
sumber
7

Ini berhasil untuk saya -

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

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html

LV98
sumber
ERROR 1064 (42000): Anda memiliki kesalahan dalam sintaks SQL; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'IDENTIFIED BY' MyNewPass '' di baris 1
trainoasis
Baru saja menyalin persisnya di sql melalui CLI: o
trainoasis
Tentu saja, sshed ke server saya + mysql -u root -p untuk sampai ke mysql cli
trainoasis
6

Anda harus mengatur ulang kata sandi! langkah-langkah untuk mac osx (diuji dan berfungsi) dan ubuntu

Hentikan MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop

Mulailah dalam mode aman:

$ sudo mysqld_safe --skip-grant-tables

(baris di atas adalah seluruh perintah)

Ini akan menjadi perintah yang berkelanjutan sampai proses selesai jadi buka jendela shell / terminal lain, masuk tanpa kata sandi:

$ mysql -u root

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

Mulai MySQL

sudo /usr/local/mysql/support-files/mysql.server start

kata sandi baru Anda adalah 'kata sandi'.

tk_
sumber
Saya mendapat pesan: tidak ada database yang dipilih
Mimouni
5

Untuk MySQL 5.7.6 dan yang lebih baru:

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

Untuk MySQL 5.7.5 dan sebelumnya:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Mata Elang
sumber
3

Untuk versi mysql terbaru (8.0.16), tidak ada jawaban yang berhasil untuk saya.

Setelah melihat beberapa jawaban berbeda dan menggabungkannya, inilah yang akhirnya saya gunakan yang berhasil:

update user set authentication_string='test' where user='root';

Semoga ini membantu.

Suhas
sumber
2

kesalahan umum yang saya hadapi dari waktu ke waktu, adalah saya lupa -popsinya, jadi apakah Anda yakin Anda menggunakan:

mysql -u root -p
Marian Theisen
sumber
2

Di MySQL 5.7, kata sandi diganti dengan 'authentication_string'.

menggunakan

update user set authentication_string=password('myfavpassword') where user='root';
Kamal Reddy
sumber
2

Menggunakan utilitas baris perintah mysqladmin untuk mengubah kata sandi MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

Sumber

Darush
sumber
1

Mencoba jawaban dari @kta tetapi tidak berhasil untuk saya.

Saya menggunakan MySQL 8.0

Ini berhasil untuk saya:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'

tangga rantai
sumber
1
Harap tambahkan beberapa penjelasan ke kode Anda - bagaimana tepatnya ini menyelesaikan pertanyaan berusia tujuh tahun?
Nico Haase
Sepertinya sintaksnya telah diubah selama tujuh tahun. Ini tidak membungkus kata sandi dengan PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu
Hash sandi harus berupa angka heksadesimal 41 digit
Mimouni
1

Begitu banyak komentar, tetapi saya dibantu metode ini:

sudo mysqladmin -u root password 'my password'

Dalam kasus saya setelah instalasi, saya mendapatkan layanan mysql tanpa kata sandi untuk pengguna root, dan saya perlu mengatur kata sandi untuk keamanan saya.

Konstantin Romanovsky
sumber
Ini dapat digunakan untuk mengatur ulang kata sandi pengguna root mysql tanpa mengetahui yang lama. Tetapi pastikan tidak ada yang memiliki akses ke syslog Anda, karena kata sandi ini dicatat:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu
0

hentikan semua layanan wamp, keluar dari wamp.

buka notepad lalu ketik> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('');

lalu simpan ke c: drive dengan nama apapun .. seperti ini "c: /example.txt"

sekarang buka "wamp" falder wamp> bin> mysql> mysql (versi Anda)> bin di jalur kasus saya adalah "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

sekarang salin jalur Anda lalu jalankan cmd dengan (ctrl + r) lalu ketik "cmd" (enter)

ketik cd lalu klik kanan pada cmd dan tempel jalur (enter) sekarang ketik (mysqld --init-file = C: \ example.txt) tanpa tanda kurung lalu (enter)

kemudian restart PC atau buka taskmgr dan matikan mysqld.exe

mulai wamp dan kata sandi Anda akan dihapus ...

MohitGhodasara
sumber
0

Untuk pengguna MacOS, jika Anda lupa kata sandi root Anda, jawaban @ thusharaK ( https://stackoverflow.com/a/28601069/5628856 ) bagus, tetapi ada sedikit trik lagi:

Jika Anda menggunakan preferensi sistem untuk memulai mysql serveride, cukup

sudo mysqld_safe --skip-grant-tables

mungkin tidak berhasil untuk Anda.

Anda harus memastikan argumen baris perintah sama dengan konfigurasi mulai sistem.

Perintah berikut berfungsi untuk saya:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Kamu bisa memakai

ps aux | grep mysql

untuk memeriksa milik Anda sendiri.

Shaofei Cheng
sumber
0

Atau cukup gunakan konfigurasi interaktif:

sudo mysql_secure_installation
shilovk.dll
sumber
-1

Di Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5 

Ganti 5.5dengan versi Anda saat ini dan Anda akan dimintai kata sandi root yang baru.

Mouneer
sumber
Di OS apa? Ini tidak masuk akal.
Khom Nazid
-1
  1. Di Mac, buka preferensi sistem> MySQL.
  2. Di bagian konfigurasi, periksa MySQL untuk menginisialisasi database.
  3. ubah kata sandi saat diminta. menginisialisasi Database
NNK Teja
sumber