Cara mengetahui kata sandi root MySQL

167

Saya tidak dapat menemukan kata sandi root MySQL saya; bagaimana saya bisa mengetahui ini? Apakah ada file tempat kata sandi ini disimpan?

Saya mengikuti tautan ini tetapi saya tidak memiliki direktori directadmin di lokal.

Om3ga
sumber
Ditemukan oleh Pencarian Google sederhana: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran
11
kata sandi root default - tunggu - "root" (tanpa tanda kutip), atau tidak ada kata sandi sama sekali (dan apakah server mysql benar-benar milik Anda)
Nikola Bogdanović
ya itu adalah server mysql lokal saya di laptop saya
Om3ga
jadi apakah seseorang baru saja melewati pertanyaan ini dan memberikan downvote pada setiap jawaban yang benar dan relevan ?
lanzz

Jawaban:

142

terima kasih kepada @thusharaK saya bisa mengatur ulang kata sandi root tanpa mengetahui kata sandi lama.

Di ubuntu saya melakukan hal berikut:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Kemudian jalankan mysql di terminal baru:

mysql -u root

Dan jalankan pertanyaan berikut untuk mengubah kata sandi:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

Di MySQL 5.7, bidang kata sandi di bidang tabel mysql.user telah dihapus, sekarang nama bidangnya adalah 'authentication_string'.

Keluar dari safe mode mysql dan mulai layanan mysql dengan:

mysqladmin shutdown
sudo service mysql start
eeezyy
sumber
24
Saya harus menggunakan mysqladmin -u root -p shutdown, dengan kata sandi baru.
SL Barth - Reinstate Monica
2
Alur instruksi yang bagus terutama: kemudian jalankan mysql di terminal baru
Mohammed Subhi Sheikh Quroush
8
saya tidak bisa melakukan ini mysql -u root. Ini menunjukkan kesalahanAccess denied
Avinash Raj
4
@AvinashRaj: Coba ini: sudo mysql -u root
Allen Gingrich
Luar biasa. Saya memahami apa yang berfungsi di RHEL 7: Terminal 1: layanan sudo mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u root UPDATE mysql.user SET Password = PASSWORD ('kata sandi baru') DI MANA Pengguna = 'root'; PRIVILEGUS FLUSH; mysqladmin -u root -p shutdown Catatan: Setelah Anda mematikan mysqladmin, Anda akan melihat safe mode keluar di Terminal 1. sudo service mysql start Itu dia dan berfungsi seperti pesona dengan kata sandi baru!
Pengguna StackOverFlow
65

Anda tidak dapat melihat kata sandi hash; satu-satunya hal yang dapat Anda lakukan adalah meresetnya!

Hentikan MySQL:

sudo service mysql stop

atau

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

Mulai dalam mode aman:

$ sudo mysqld_safe --skip-grant-tables

(baris di atas adalah seluruh perintah)

Ini akan menjadi perintah yang sedang berlangsung 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';

MySQL 5.7 dan lebih tinggi:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Mulai MySQL:

sudo mysql start

atau

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

Kata sandi baru Anda adalah 'kata sandi'.

tk_
sumber
sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: perintah tidak ditemukan
Isuru
Apa yang harus dilakukan dalam kasus ini?
Isuru
Sepertinya mysql tidak diinstal dengan benar. Hapus instalan dengan benar dan instal ulang.
tk_
Terima kasih banyak. Sesuatu yang aneh dengan saya mysql_secure_installationdan root tidak lagi bekerja sama. Apa yang dilakukan authentication_stringpengaturan?
akan
3
Untuk memulai kembali, coba mysqladmin -u root -p shutdowndengan kata sandi yang baru kemudiansudo service mysql start
forumulator
37

MySQL 5.7 ke atas menyimpan root di file log MySQL.

Silakan coba ini:

sudo grep 'temporary password' /var/log/mysqld.log
Vlad
sumber
Dalam kasus saya, kata sandi tidak ada di sini; namun, sebaliknya, /var/log/mysql/error.logberisi peringatan tentang kata sandi root yang kosong - jadi ini menyelamatkan hari saya :)
Janaka Bandara
19

satu hal yang membuat saya tersandung pada pemasangan baru mySQL dan bertanya-tanya mengapa saya tidak bisa mendapatkan kata sandi default untuk bekerja dan mengapa bahkan metode reset di mana tidak berfungsi. nampaknya pada Ubuntu 18 versi terbaru dari server mysql tidak menggunakan auth kata sandi sama sekali untuk pengguna root secara default. Jadi ini berarti apa pun yang Anda atur, tidak akan membiarkan Anda menggunakannya. ia mengharapkan Anda untuk masuk dari soket istimewa. begitu

mysql -u root -p

tidak akan berfungsi sama sekali, bahkan jika Anda menggunakan kata sandi yang benar !!! itu akan menolak akses tidak peduli apa yang Anda masukkan.

Sebaliknya, Anda harus menggunakan

sudo mysql

itu akan berfungsi dengan kata sandi apa pun. maka setelah Anda masuk, Anda perlu mengetik

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

kemudian logout dan sekarang yang berdarah akhirnya akan menerima kata sandi Anda

Kit Ramos
sumber
14

Ikuti langkah-langkah ini untuk mengatur ulang kata sandi di sistem Windows

  1. Hentikan layanan Mysql dari task manager

  2. Buat file teks dan rekatkan pernyataan di bawah ini

MySQL 5.7.5 dan sebelumnya:

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


MySQL 5.7.6 dan yang lebih baru:

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

  1. Simpan sebagai mysql-init.txtdan letakkan di 'C' drive.

  2. Buka command prompt dan rekatkan yang berikut ini

C:\> mysqld --init-file=C:\\mysql-init.txt

Lokesh kumar Chippada
sumber
2
Ini adalah penyelamat, tip hebat!
Nicholas Kreidberg
bekerja di Centos7 mysqld --init-file=/root/m.txt. Saya menambahkan perintah di atas SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');ke /root/m.txt
Damodar Bashyal
8

Kecuali manajer paket meminta Anda mengetikkan kata sandi root selama instalasi, kata sandi root default adalah string kosong. Untuk terhubung ke server yang baru diinstal, ketik:

shell> mysql -u root --password=
mysql>

Untuk mengubah kata sandi, dapatkan kembali shell unix dan ketik:

shell> mysqladmin -u root --password= password root

Kata sandi baru adalah 'root'. Sekarang terhubung ke server:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Ups, kata sandi telah berubah. Gunakan yang baru, root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Baru lakukan sesuatu yang menarik

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy

mszmurlo
sumber
1
itu tidak menggunakan kata sandi tetapi soket yang diautentikasi secara default sekarang. jadi hanya mengubah kata sandi tidak cukup baik lagi.
Kit Ramos
7

Sebagai tambahan untuk jawaban lain, dalam instalasi cpanel, kata sandi root mysql disimpan dalam file bernama /root/.my.cnf. (dan layanan cpanel menyetelnya kembali saat perubahan, sehingga jawaban lain di sini tidak akan membantu)

Ohad Cohen
sumber
6

Anda dapat melihat kata sandi root mysql, yah saya sudah mencobanya di mysql 5.5 jadi tidak tahu tentang versi baru lainnya yang berfungsi dengan baik atau tidak

nano ~/.my.cnf
pengguna889030
sumber
4

Ini bekerja untuk saya:

Pada terminal ketik berikut ini

$ sudo mysql -u root -p

Masukkan kata kunci:// cukup tekan enter

mysql>

Cahaya
sumber
tampaknya server mysql tidak menggunakan kata sandi auth secara default lagi. Anda harus memulai klien mysql sebagai pengguna super (sudo) untuk mendapatkan akses hingga Anda mengubah metode login.
Kit Ramos
4

Kata sandi default yang berfungsi untuk saya setelah instalasi segera server mysql adalah: mysql

Deepak Chaudhry
sumber
2
mungkin dia tidak menjawab pertanyaan, tetapi banyak orang yang datang ke sini mungkin menemukan itu menyelesaikan masalah mereka.
Ohad Cohen
3

Prosedurnya berubah tergantung versi MySql. Ikuti prosedur persis seperti yang dijelaskan untuk versi Anda:

  • PETUNJUK - Baca sebelum halaman instruksi untuk versi MySql Anda *

  • Pada langkah 5: Alih-alih menjalankan CMD, buat pintasan di desktop Anda memanggil CDM.exe. Kemudian klik kanan pada shortcut dan pilih "Execute as Administrator".

  • Pada langkah 6: Lewati versi yang diusulkan pertama dari perintah dan jalankan yang kedua, yang dengan parameter --defaults-file

  • Setelah Anda menjalankan perintah, jika semuanya baik-baik saja, jendela CMD tetap terbuka dan perintah langkah 6 terus dijalankan. Cukup tutup jendela (klik 'x'), lalu paksa tutup MySQl dari Task Manager.

  • Hapus file dengan perintah SQL, dan mulai lagi MySQL. Kata sandi harus diubah sekarang.

5.0 http://dev.mysql.com/doc/refman/5.0/id/resetting-permissions.html

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

... cukup ubah versi di tautan (5.5, 5.6, 5.7)

JuanCamilo
sumber
3

Di file .err "hostname" Anda di dalam folder data yang berfungsi untuk MySQL, coba cari string yang dimulai dengan:

"Kata sandi sementara dihasilkan untuk roor @ localhost"

kamu bisa memakai

less /mysql/data/dir/hostname.err 

kemudian perintah slash diikuti oleh string yang ingin Anda cari

/"A temporary password"

Kemudian tekan n, untuk pergi ke hasil Berikutnya.

nDCasT
sumber
0

Sistem:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Prosedur:

  1. Buka dua sesi shell, masuk ke satu sebagai pengguna root Linux dan yang lainnya sebagai pengguna non-root dengan akses ke mysqlperintah.

  2. Di sesi root Anda, hentikan pendengar mysqld normal dan mulai pendengar yang melewati otentikasi kata sandi ( catatan: ini adalah risiko keamanan yang signifikan karena siapa pun yang memiliki akses ke mysql perintah dapat mengakses database Anda tanpa kata sandi. Anda mungkin ingin menutup sesi shell aktif dan / atau nonaktifkan akses shell sebelum melakukan ini):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Di sesi non-root, masuk ke mysql dan setel kata sandi root mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Di sesi root Anda, bunuh instance mysqld tanpa kata sandi dan kembalikan pendengar mysqld yang normal ke layanan:

    # kill %1
    # systemctl start mysqld

  5. Dalam sesi non-root Anda, uji kata sandi root baru yang Anda konfigurasi di atas:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>

KODE-REaD
sumber
-2

Saya memecahkan ini dengan cara yang berbeda, ini mungkin lebih mudah bagi sebagian orang.

Saya melakukannya dengan cara ini karena saya mencoba memulai dalam safe mode tetapi tidak dapat terhubung dengan kesalahan: ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui socket '/var/run/mysqld/mysqld.sock' (2)

Apa yang saya lakukan adalah terhubung secara normal sebagai root:

$ sudo mysql -u root

Lalu saya membuat pengguna super baru:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Kemudian masuk sebagai pengguna saya

$ mysql -u myuser -p -h localhost

Mencoba mengubah kata sandi tidak memberi saya kesalahan tetapi tidak melakukan apa pun untuk saya, jadi saya menjatuhkan dan menciptakan kembali pengguna root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Pengguna root sekarang bekerja dengan kata sandi baru

Trevorbest
sumber
-5

Buka phpMyAdmin> config.inc.php> $ cfg ['Server'] [$ i] ['kata sandi'] = '';

pengguna3288185
sumber
1
Tidak ada dalam pertanyaan tentang phpmyadmin.
Marquis of Lorne