Jika saya lakukan SHOW GRANTS
di database mysql saya, saya dapatkan
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Jika saya tidak salah, root@localhost
berarti pengguna hanya root
dapat mengakses server dari localhost
. Bagaimana cara memberi tahu MySQL untuk memberikanroot
izin untuk mengakses server mysql ini dari setiap mesin lain (dalam jaringan yang sama) juga?
mysql
connection
grant
Aufwind
sumber
sumber
localhost
untuk%
akan memberikan akses root ke jaringan publik. Jangan lupaflush privileges;
Jawaban:
Ini memberikan akses root dengan kata sandi yang sama dari mesin mana pun di
*.example.com
:Jika resolusi nama tidak akan berhasil, Anda juga dapat memberikan akses melalui IP atau subnet:
GRANT
Dokumen sintaks MySQL .sumber
...TO 'root'@'%' IDENTIFIED...
akan memberikan akses dari mana-mana?SHOW GRANTS
masih menunjukkan hal yang sama (seperti dalam pertanyaan saya). Aku bahkan melakukannyaFLUSH PRIVILGES
. Apakah ada yang saya lewatkan?FLUSH PRIVILEGES
. Keluar dan masuk kembali, mulai ulang layanan mysqld jika Anda memiliki akses. Juga, pastikan bahwaskip networking
baris tidak diaktifkan dimy.cnf
meskipun itu tidak akan menjelaskan AndaSHOW GRANTS
masih tidak sama.IDENTIFIED BY PASSWORD
disertai dengan 41 digit angka heksadesimal berciri. GunakanIDENTIFIED BY 'password'
jika Anda ingin memasukkan kata sandi secara langsung.Mencoba:
sumber
Pa55w0rd
tampaknya bodoh, jangan bilang itu kata sandi yang ingin Anda buat. Untuk semua orang yang mencoba login mysql Anda?FLUSH PRIVILEGES;
Anda perlu mengambil beberapa langkah untuk memastikan mysql terlebih dahulu dan kemudian pengguna root dapat diakses dari luar:
Nonaktifkan
skip-networking
dimy.cnf
(yaitu:/etc/mysql/my.cnf
)Periksa nilai
bind-address
masukmy.cnf
, jika diatur ke127.0.0.1
, Anda dapat mengubahnya0.0.0.0
untuk mengizinkan akses dari semua IP atau ip apa pun yang ingin Anda sambungkan.Berikan akses jarak jauh pengguna root dari ip mana pun (atau tentukan ip Anda, bukan
%
)Mulai ulang layanan mysql:
sumber
*.* = DB.TABLE
Anda dapat membatasi pengguna ke database tertentu dan tabel tertentu.'root'@'%'
Anda dapat mengubah root dengan pengguna mana pun yang Anda buat dan% mengizinkan semua IP. Anda dapat membatasinya dengan mengubah% .168.1.1 dll juga.Jika itu tidak menyelesaikan, maka ubah juga my.cnf atau my.ini dan beri komentar pada baris ini
bind-address = 127.0.0.1
ke#bind-address = 127.0.0.1
dan
skip-networking
ke#skip-networking
Raspberry Pi, saya menemukan konfigurasi alamat-bind di bawah
\etc\mysql\mariadb.conf.d\50-server.cnf
sumber
*.*
dan'user'@'address'
. Terima kasih! :)Hibah SQL itu yang dibagikan orang lain berfungsi. Jika Anda masih tidak dapat mengakses database, mungkin Anda hanya memiliki batasan firewall untuk port tersebut. Itu tergantung pada jenis server Anda (dan semua router di antaranya) tentang cara membuka koneksi. Buka port TCP 3306 masuk, dan berikan aturan akses serupa untuk mesin eksternal (semua / subnet / IP tunggal / dll.).
sumber
Buka
/etc/mysql/mysql.conf.d/mysqld.cnf
file dan beri komentar pada baris berikut:sumber
Dalam kasus saya, saya mencoba untuk terhubung ke server mysql jarak jauh di cent OS. Setelah melalui banyak solusi (memberikan semua hak istimewa, menghapus pengikatan ip, mengaktifkan jaringan) masalah masih belum terpecahkan.
Ternyata, saat mencari berbagai solusi, saya menemukan iptables, yang membuat saya menyadari port mysql 3306 tidak menerima koneksi.
Berikut adalah catatan kecil tentang cara saya memeriksa dan menyelesaikan masalah ini.
-Menambahkan aturan tabel ip untuk memungkinkan koneksi di port:
-Tidak akan merekomendasikan ini untuk lingkungan produksi, tetapi jika iptables Anda tidak dikonfigurasi dengan benar, menambahkan aturan mungkin masih belum menyelesaikan masalah. Dalam hal berikut ini harus dilakukan:
Semoga ini membantu.
sumber
Dua langkah:
siapkan pengguna dengan karakter pengganti:
create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
tambahkan yang berikut ini:
bind-address=0.0.0.0
restart server, Anda seharusnya tidak memiliki masalah saat menyambungkannya.
sumber
Dengan mysql 8 dan versi yang lebih baru, Anda tidak dapat menambahkan pengguna dengan memberikan hak istimewa. artinya dengan kueri ini:
mysql akan mengembalikan kesalahan ini:
ini berarti Anda tidak memiliki pengguna root untuk% domain. jadi Anda harus memasukkan pengguna terlebih dahulu lalu memberikan hak istimewa seperti ini:
Jangan lupa untuk mengganti kata sandi dengan kata sandi khusus Anda.
sumber
Ini berhasil untuk saya. Tapi ada masalah aneh yang bahkan aku coba dulu yang tidak terpengaruh. Saya memperbarui halaman phpmyadmin dan entah bagaimana berhasil.
Jika Anda membutuhkan akses ke local-xampp-mysql. Anda dapat pergi ke xampp-shell -> membuka command prompt.
Kemudian mysql -uroot -p --port = 3306 atau mysql -uroot -p (jika ada set kata sandi). Setelah itu Anda dapat memberikan akses tersebut dari halaman shell mysql (juga dapat bekerja dari localhost / phpmyadmin).
Hanya menambahkan ini jika seseorang menemukan topik ini dan mengalami masalah pemula.
sumber
Ubuntu 18.04
Instal dan pastikan mysqld kita berjalan ..
Masuk ke database dan atur pengguna root:
Edit izin mysqld dan mulai ulang:
Dari komputer lain, uji .. Obvs port (3306) pada mesin mysqld harus mengizinkan koneksi dari mesin uji.
Semua "keamanan" tambahan dari MySql tidak membantu keamanan sama sekali, itu hanya memperumit dan mengaburkan, sekarang sebenarnya lebih mudah untuk mengacaukannya daripada di masa lalu, di mana Anda hanya menggunakan kata sandi yang sangat panjang.
sumber