Mengatur kata sandi pengguna root MySQL pada OS X


235

Saya baru saja menginstal MySQL di Mac OS X. Langkah selanjutnya adalah mengatur kata sandi pengguna root, jadi saya melakukan ini selanjutnya:

  1. Buka aplikasi terminal untuk mengakses baris perintah Unix.
  2. Di bawah prompt Unix saya menjalankan perintah-perintah ini:

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

Tapi, ketika saya menjalankan perintah

$ ./mysql -u root, ini jawabannya:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Saya bisa masuk ke mysql baris perintah tanpa kata sandi!

Kenapa ini?

Jawaban:


320

Coba perintah FLUSH PRIVILEGESketika Anda masuk ke terminal MySQL. Jika itu tidak berhasil, coba serangkaian perintah berikut saat berada di terminal MySQL

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

Ganti NEWPASSWORD dengan kata sandi apa pun yang Anda inginkan. Harus siap!

Pembaruan : Pada MySQL 5.7, passwordbidang telah diubah namanya authentication_string. Saat mengubah kata sandi, gunakan kueri berikut untuk mengubah kata sandi. Semua perintah lain tetap sama:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Pembaruan : Pada 8.0.15 (mungkin sudah sebelum versi itu) fungsi PASSWORD () tidak berfungsi, sebagaimana disebutkan dalam komentar di bawah ini. Anda harus menggunakan:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';


24
Di MySQL 5.7 dan seterusnya, nama kolom telah berubah. Anda harus menggunakannya UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';sebagai gantinya.
Carlos P

Terimakasih atas peringatannya. Saya akan mengedit jawaban saya untuk mencerminkan yang sesuai.
Scott

8
Ini juga terlihat seperti fungsi PASSWORD () sudah usang dan Anda harus meletakkan saja 'password'di sisi kanan persamaan
kvn

6
Jika Anda tidak dapat masuk, bagaimana ini membantu?
Jake N

11
setelah mengikuti langkah-langkah ini. Ketika saya mencoba masuk lagi dengan kata sandi baru saya, saya mendapatkanERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Þaw

197

Jika Anda tidak ingat kata sandi yang Anda setel untuk root dan perlu meresetnya, ikuti langkah-langkah ini:

  1. Hentikan server mysqld, ini bervariasi per instal
  2. Jalankan server dalam safe mode dengan privilege bypass

sudo mysqld_safe --skip-grant-tables;

  1. Di jendela baru terhubung ke database, atur kata sandi baru dan siram izin & keluar:

mysql -u root

Untuk MySQL yang lebih lama dari MySQL 5.7 gunakan:

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

Untuk MySQL 5.7+ gunakan:

USE mysql;

UPDATE mysql.user SET authentication_string=PASSWORD("your-password") WHERE User='root';

Segarkan dan keluar:

FLUSH PRIVILEGES;

\q

  1. Hentikan server safe mode dan jalankan kembali server reguler Anda. Kata sandi baru harus berfungsi sekarang. Bekerja seperti pesona bagi saya :)

4
Itu sempurna, terima kasih! Di Mac OSx Mavericks (2014) gunakan sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams

2
passwordharus authentication_stringsekarang.
zx1986

Setelah MySQL 5.7, seharusnya UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, seperti kata @Scott.
zx1986

Terima kasih akan menambahkan itu
radtek

1
Pada MacOSX ketika mySQL diinstal dengan "Preferensi 'Pane' pilihan (Apple Menu -> System Preferences ...), saya menemukan bahwa saya pertama kali harus berhenti mySQL menggunakan panel preferensi untuk langkah lengkap 1 di atas Menggunakan. sudo killTidak berfungsi karena Mac OSx akan secara otomatis meluncurkan kembali msql baru secara instan. Setelah saya menghentikan mysql menggunakan panel preferensi, saya dapat menjalankan secara manualmysqld_safe --skip-grant-tables
toddcscar

85

Setelah menginstal MySQL, Anda harus membuat kata sandi "root". Jika Anda tidak membuat kata sandi root, maka, well, tidak ada kata sandi root, dan Anda tidak perlu kata sandi untuk login.

Jadi, yang dikatakan, Anda perlu membuat kata sandi root.

Menggunakan terminal masukkan yang berikut ini:

Instalasi: Tetapkan kata sandi pengguna root:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Jika Anda melakukan kesalahan, atau perlu mengubah kata sandi root, gunakan yang berikut ini:

Ubah kata sandi root:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

use mysql;
update user set password=PASSWORD("NEW_PASSWORD_HERE") where User='root';
flush privileges;
quit

5
Bagi mereka yang memiliki MySQL 5.7, Anda harus menggunakan update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';daripada menggunakanset password=...
pdm

66

Instruksi yang disediakan di situs web mysql sangat jelas, daripada yang disebutkan di atas

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql> PRIVILEGUS FLUSH;
  5. mysql> ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI OLEH 'MyNewPass';
  6. mysql> exitatau Ctrl + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Masukkan kata sandi baru yaitu MyNewPass

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


2
di mac os 10.12.6, ia memberikan kesalahan setelah perintah ke-2 ERROR! Server berhenti tanpa memperbarui file PID (/usr/local/mysql/data/myhostname.pid).
diEcho

Terima kasih telah menunjukkan di mana menemukan dokumentasi. Agak membingungkan pada mac ketika Anda juga dapat menggunakan sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist dan sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist untuk berhenti dan memulai mysql. Menggunakan sudo /usr/local/mysql/support-files/mysql.server stop sepertinya pendekatan yang lebih baik.
Daniel

59
  1. Hentikan server mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (Dari Terminal): sudo systemctl stop mysqld.service
  2. Mulai server dalam mode aman dengan memotong hak istimewa

    • Dari Terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Di jendela terminal baru :

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Ini akan membuka baris perintah mysql. Dari sini masukkan:

    • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

    • FLUSH PRIVILEGES;

    • quit

  5. Hentikan server mysqld lagi dan mulai ulang dalam mode normal.

    • Mac OSX (Dari Terminal): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminal Linux: sudo systemctl restart mysqld

1
Untuk menjalankan 5.7.23 di High Sierra, ini berfungsi dengan baik. Terima kasih.
Daniel

Di MySQL 8.0.11, fungsi set di langkah ke-4 dihapus. Anda periksa di sini, ini berhasil. stackoverflow.com/a/52579886/621951
Günay Gültekin

22

Untuk Mysql 5.7 baru karena beberapa alasan, perintah bin dari Mysql tidak dilampirkan pada shell:

  1. Nyalakan kembali Mac setelah menginstal.

  2. Mulai Mysql:

    Preferensi Sistem> Mysql> Tombol Mulai

  3. Pergi ke folder install Mysql di terminal:

    $ cd /usr/local/mysql/bin/

  4. Akses ke Mysql:

    $ ./mysql -u root -p

dan masukkan kata sandi awal yang diberikan untuk instalasi.

  1. Di terminal Mysql ubah kata sandi:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';


16

Di terminal, tulis mysql -u root -pdan tekan Return. Masukkan kata sandi mysql saat ini yang harus Anda catat. Dan atur kata sandinya SET PASSWORD = PASSWORD('new_password');

Silakan lihat dokumentasi ini di sini untuk detail lebih lanjut.


10

Jika Anda lupa kata sandi root MySQL, tidak bisa mengingat atau ingin masuk ... Anda dapat mengatur ulang kata sandi database mysql dari baris perintah di Linux atau OS X selama Anda tahu kata sandi pengguna root dari kotak tersebut. Anda berada di:

(1) Hentikan MySQL

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

(2) Mulai dalam mode aman:

sudo mysqld_safe --skip-grant-tables

(3) Ini akan menjadi perintah yang sedang berlangsung sampai proses selesai jadi buka jendela shell / terminal lain , masuk tanpa kata sandi:

mysql -u root

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

Pada perintah UPDATE di atas hanya ganti 'kata sandi' dengan kata sandi baru Anda sendiri, pastikan untuk menyimpan tanda kutip

(4) Hemat dan cukup

FLUSH PRIVILEGES;

\q

(5) Mulai MySQL

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

5

Ketika saya menginstal OS X Yosemite, saya mendapat masalah dengan Mysql. Saya mencoba banyak metode tetapi tidak ada yang berhasil. Saya sebenarnya menemukan cara yang cukup mudah. Coba ini.

  1. Log in terminal pertama dari su privilege.

sudo su

  1. hentikan mysql

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

  1. mulai dalam mode aman:

sudo mysqld_safe --skip-grant-tables

  1. buka terminal lain, login sebagai hak istimewa daripada, login mysql tanpa kata sandi

mysql -u root

  1. ubah kata sandi

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

  1. hak istimewa

FLUSH PRIVILEGES;

  1. Anda selesai sekarang

Terima kasih banyak. Saya berjuang dengan ini sebentar. Apakah ini hal baru pada versi terbaru mysql?
jpbourbon


3

Jika Anda tidak dapat mengingat kata sandi Anda, jawaban @ radtek bekerja untuk saya kecuali dalam kasus saya, saya telah menyiapkan MySQL menggunakan minuman yang berarti bahwa langkah 1 dan 2 dari jawabannya harus diubah menjadi:

  1. /usr/local/bin/mysql.server stop

  2. /usr/local/bin/mysqld_safe --skip-grant-tables

Catatan: kurangnya sudo.


3

Saya pikir ini harus berhasil:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Perhatikan bahwa Anda mungkin harus mengganti root dengan nama pengguna Anda jika itu bukan root)


2

Menghentikan Server MySQL

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

Mulai MySQL dalam mode aman

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

Mengubah kata sandi root

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

Pengujian

Lari /usr/local/mysql/bin/mysql -u root

Sekarang masukkan kata sandi baru untuk mulai menggunakan MySQL.


2

Inilah yang sebenarnya bekerja untuk saya:

  1. Pastikan tidak ada proses MySQL lain yang sedang berjalan. Untuk memeriksa ini lakukan hal berikut:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Mulai MySQL dengan perintah:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Kata sandi untuk setiap pengguna disimpan di tabel mysql.user di bawah kolom Pengguna dan otentikasi_string masing-masing. Kami dapat memperbarui tabel sebagai:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'

2

macOS 10.14+ dengan 5.7.26 diinstal dari installer Mac OSX DMG.

Saat mencoba menggunakan perintah UPDATE yang diposting oleh pengguna lain menghasilkan kesalahan berikut:

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

Salin kata sandi yang disajikan kepada Anda oleh Installer open terminal dan lakukan hal berikut:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';


2

Untuk referensi MySQL 8.0.15 +, fungsi kata sandi () tidak tersedia. Gunakan perintah di bawah ini.

Silakan gunakan

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

1

Jika Anda lupa kata sandi atau ingin mengubahnya ke mysql Anda:

  1. mulai terminal Anda dan masukkan:
sudo su
  1. Masukkan pass untuk sistem Anda
  2. Hentikan mysql Anda:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Biarkan jendela ini BUKA, jalankan jendela terminal kedua dan masukkan di sini:
mysql -u root
  1. Dan ubah kata sandi Anda untuk mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

di mana "new_password" - pass baru Anda. Anda tidak perlu pass lama untuk mysql.

  1. Siram, keluar dan periksa pass baru Anda:
FLUSH PRIVILEGES;
  1. Tutup semua jendela dan periksa pass baru Anda untuk mysql. Semoga berhasil.

1

Banyak yang berubah untuk MySQL 8. Saya telah menemukan modifikasi berikut dari dokumentasi MySQL 8,0 "Cara Mereset Kata Sandi Root" bekerja dengan Mac OS X.

Buat file temp $HOME/mysql.root.txtdengan SQL untuk memperbarui kata sandi root:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Ini digunakan mysql_native_passworduntuk menghindari plugin Otentikasi 'caching_sha2_password' tidak dapat dimuat kesalahan, yang saya dapatkan jika saya menghilangkan opsi.

Hentikan server, mulai dengan --init-fileopsi untuk mengatur kata sandi root, lalu mulai ulang server:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start


1

Mari kita tambahkan solusi ini yang berfungsi di laptop saya!

Mac dengan Osx Mojave 10.14.5

Mysql 8.0.17 diinstal dengan homebrew

  • Saya menjalankan perintah berikut untuk menemukan path mysql

    brew info mysql

  • Setelah path diketahui, saya menjalankan ini:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • Di terminal lain saya jalankan:

    mysql -u root

  • Di dalam terminal itu, saya mengubah kata sandi root menggunakan:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • dan untuk menyelesaikan saya jalankan:

    FLUSH PRIVILEGES;

Dan voila kata sandi telah diatur ulang.

Referensi :


1

Anda dapat secara manual mematikan mysql di Mac, dengan mengklik  menu Apple dan membuka System Preferences. Pilih panel preferensi “MySQL”, lalu klik tombol “Stop MySQL Server” untuk menghentikan Server MySQL di Mac.

Setelah Anda menghentikan mysql Anda, Anda harus mengikuti langkah-langkah ini.

  • Anda harus memulai mysql dalam mode skip-grant-tables

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • Di terminal Anda sendiri, masukkan perintah ini ke FLUSH PRIVILEGES yang ada

/ usr / local / mysql / bin / mysql mysql> PRIVILEGUS FLUSH;

  • Sekarang Anda perlu mengubah kata sandi pengguna

mysql> ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI OLEH 'newpassword';

mysql> keluar

Kemudian Anda dapat pergi ke menu  Apple dan membuka System Preferences. Pilih panel preferensi “MySQL”, lalu klik tombol “Stop MySQL Server” untuk menghentikan Server MySQL di Mac.

Akhirnya Anda dapat kembali ke menu  Apple dan membuka System Preferences. Pilih panel preferensi "MySQL", lalu klik tombol "Start MySQL Server" untuk memulai MySQL Server pada Mac.

Semoga itu bisa membantu


1

Tidak ada komentar sebelumnya yang menyelesaikan masalah di Mac saya. Saya menggunakan perintah di bawah ini dan itu berhasil.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root

0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Entah bagaimana saya perlu melakukan ini setiap kali Macbook saya restart. Posting ini untuk referensi pribadi, semoga membantu orang lain juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.