Aktifkan akses tanpa kata sandi ke MySQL


15

Bagaimana saya bisa menghapus kata sandi untuk MySQL? Saya tidak ingin memiliki kata sandi untuk terhubung ke database. Server saya menjalankan Ubuntu.


Sama seperti masalah minat, mengapa Anda tidak menginginkan kata sandi?
John Gardeniers

Sebagai contoh saya mengalami kesalahan ketika saya menjalankan "dpkg-reconfigure phpmyadmin". Berhenti dengan kesalahan 1045 dengan akses ditolak root @ localhost "password: no" berakhir.
Lacek

Jawaban:


29

Secara pribadi, saya pikir lebih baik mengatur kata sandi dan menyimpannya di /root/.my.cnf:

Pertama:

mysqladmin -u root password 'asdfghjkl'

Kemudian edit file .my.cnf root:

[client]
password = asdfghjkl

Pastikan untuk chmod 0600 .my.cnf.

Sekarang Anda memiliki kata sandi tetapi Anda tidak lagi diminta untuk itu. Instalasi server MySQL default saya adalah kata sandi unik yang benar-benar acak untuk setiap server MySQL, disimpan dalam file .my.cnf seperti ini.


1
Saya sangat setuju dengan pengaturan lingkungan Anda untuk secara otomatis mengotentikasi Anda vs menghapus kata sandi.
Zoredache

2
Anda mungkin perlu mengutip kata sandi itu di .my.cnf. Itu tidak bekerja untuk saya tanpa.
user67641

1
@ user67641: Mungkin tergantung pada versi dan apa yang ada dalam kata sandi Anda ... Punyaku semua adalah string alfanumerik panjang acak (tidak ada karakter khusus) dan belum membutuhkan tanda kutip.
freiheit

2
Jika Anda perlu membuat /root/.my.cnf, ada baiknya secara eksplisit mengatur 0600 izin untuk memastikan tidak ada pengguna lain yang bisa melihatnya. Sebagian besar waktu pengguna normal tidak bisa turun ke / root, tetapi paranoia ekstra hampir selalu dijamin.
Dale Anderson

Hilang mv ./+%Y%m%d. $ Db.sql $ OUTPUT` antara mysqldump dan gzip
Siddharth

9

Jika Anda memiliki set kata sandi untuk MySQL, ikuti instruksi di Pulihkan kata sandi root MySQL , dan kemudian atur kata sandi Anda ke nol:

Untuk 5.7.6 dan yang lebih baru

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

Untuk 5.7.5 dan sebelumnya

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

* membutuhkan restart DB (lihat instruksi di tautan) agar ini berlaku.

sudo service mysql restart

dalam hal ini, jangan lupa untuk "membuka hak istimewa;"
Marco Ramos

@meyosef - tandai jawaban sebagai dijawab jika masalah Anda teratasi (klik tanda centang hijau di bawah jumlah suara).
Jneves

Saya pikir saya bisa menggunakan kata sandi kosong hanya untuk soket Unix dan bukan loopback, tetapi itu tidak mungkin. The unix_socketPlugin melakukan hal yang sedikit berbeda.
baskom

9

Ya, lebih sedikit kata sandi bisa menjadi hal yang baik. Tapi jangan hanya membuka database untuk semua orang.

via unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Ini memberi Anda akses mysql tanpa kata sandi untuk pengguna root yang masuk secara lokal. Btw. ini adalah default dalam rilis ubuntu / debian terbaru.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Slide penjelasan: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
Selamat datang di SF! Jawaban pertama yang bagus: jelas, ringkasan yang bagus, tautan untuk penjelajahan lebih lanjut, dan itu menambah sesuatu pada kumpulan jawaban yang ada. Saya senang menjadi upvote pertama Anda, dan saya harap Anda tetap tinggal untuk menulis lebih banyak jawaban seperti ini.
MadHatter

Slide tidak apa-apa, tapi ini adalah dokumentasi yang sebenarnya: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

5

Anda juga dapat melakukan:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Saya cukup yakin bahwa secara default tidak ada kata sandi jika Anda adalah pengguna admin dan mengaksesnya secara lokal. Apakah Anda menemukan sesuatu yang berbeda dari itu?

Apakah ini berhasil?

#> mysqladmin -u root password ''
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.