Saya memiliki instans AWS EC2. Saya menginstal mysql di server ubuntu dan sekarang saya mencoba terhubung ke DB yang diinstal di server ubuntu.

Saya tidak bisa seumur hidup saya mencari tahu mengapa mysql tidak akan memulai pada IP yang saya ikat ke file konfigurasi.

Saya menjalankan perintah berikut:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Beberapa hal:

  1. Saya mengedit bind-ip-address ke ip publik saya dalam hal ini: 54.62.33.334 alih-alih 127.0.0.1 karena ini adalah server produksi.
  2. Saya mengganti pengguna default mysql dengan pengguna yang saya buat jason
  • Saya membuka port jaringan masuk saya ke 3306.

Saya membuat pengguna bernama "jason" dan memberinya akses ke semua database menggunakan perintah berikut:

GRANT ALL PRIVILEGES ON 'jason'@'54.62.33.334';

Ketika saya me-restart server mysql saya menggunakan sudo systemctl restart mysql itu memberi saya kesalahan ini:

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Saya menjalankan perintah berikut untuk melihat kesalahannya.

journalctl -xe

Itu memberi saya ini.

Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: ERROR: Unable to start MySQL server: Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: 2020-07-02T02:51:53.747898Z 0 [ERROR] Fatal error: Can't change to run as user 'jason' ; Please check that the user exists! Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: 2020-07-02T02:51:53.748587Z 0 [ERROR] Aborting Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: Please take a look at https://wiki.debian.org/Teams/MySQL/FAQ for tips on fixing common upgrade issues. Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: Once the problem is resolved, restart the service. Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: mysql.service: Control process exited, code=exited status=1 Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: mysql.service: Failed with result 'exit-code'. Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: Failed to start MySQL Community Server. -- Subject: Unit mysql.service has failed -- Defined-By: systemd

Tetapi saya memiliki pengguna bernama jason Saya menjalankan perintah berikut untuk memeriksa apakah pengguna ada di tabel pengguna saya dan itu mengembalikan 1 yang benar jadi saya tidak yakin apa yang saya lakukan salah.

SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username');

FYI: Saya dapat terhubung ke DB dengan baik menggunakan root tetapi saya ingin terhubung menggunakan pengguna jason tetapi saya tidak bisa karena alasan tertentu.

Setiap saran saya akan sangat menghargainya. Saya sudah mencoba mencari tahu ini selama 4-5 jam terakhir.

0
Jorden 2 Juli 2020, 05:55

1 menjawab

Jawaban Terbaik

File my.cnf mencantumkan pengguna dalam [mysqld] (atau server atau beberapa opsi lain) sebagai pengguna unix dari sistem tempat server dimulai. Jangan mengubah ini.

Anda dapat mengatur user=jason di bagian [client] atau [mysql] dari file konfigurasi yang akan merujuk ke pengguna database jason. Ini harus dalam konfigurasi yang digunakan oleh aplikasi yang terhubung ke server.

Daripada mengikat ke alamat IP publik Anda harus melihat menggunakan ssh tunneling untuk mengelola instans DB publik.

Di SQL:

SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username');

Tidak perlu memasukkan ini ke dalam subquery. Pilihan sederhana tidak masalah. Juga kombinasi (user,host) adalah pengguna yang berbeda.

0
danblack 2 Juli 2020, 03:10