Akses mysql dengan ip public

However, in some situations, it is necessary to access the MySQL server from a remote location. For example, you may need to connect to the remote MySQL server from your local system or a multi-server deployment where the application is running on a different machine from the database server. One option would be to access the MySQL server through SSH Tunnel , and another is to configure the MySQL server to accept remote connections.

This article goes through the steps necessary to allow remote connections to a MySQL server. The same instructions apply for MariaDB.

Configuring MySQL Server

The first step is to set the MySQL server to listen on a specific IP address or all IP addresses on the machine.

If the MySQL server and clients can communicate over a private network, the best option is to set the MySQL server to listen only on the private IP.

Otherwise, if you want to connect to the server over a public network, set the MySQL server to listen on all IP addresses on the machine. To do so, you need to edit the MySQL configuration file and add or change the value of the

bind-address           = 0.0.0.0
# skip-networking
7 option. You can set a single IP address and IP ranges. If the address is
bind-address           = 0.0.0.0
# skip-networking
8, the MySQL server accepts connections on all host IPv4 interfaces. If you have IPv6 configured on your system, then instead of
bind-address           = 0.0.0.0
# skip-networking
8, use
sudo systemctl restart mysql
0.

The location of the MySQL configuration file differs depending on the distribution. In Ubuntu and Debian the file is located at

sudo systemctl restart mysql
1, while in Red Hat based distributions such as CentOS, the file is located at
sudo systemctl restart mysql
2.

Open the file with your text editor :

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

Search for a line that begins with

bind-address           = 0.0.0.0
# skip-networking
7 and set its value to the IP address on which a MySQL server should listen.

By default, the value is set to

sudo systemctl restart mysql
4 (listens only in localhost).

In this example, we’ll set the MySQL server to listen on all IPv4 interfaces by changing the value to

bind-address           = 0.0.0.0
# skip-networking
8

mysqld.cnf

bind-address           = 0.0.0.0
# skip-networking

If there is a line containing

sudo systemctl restart mysql
6, delete it or comment it out by adding
sudo systemctl restart mysql
7 at the beginning of the line.

In MySQL 8.0 and higher, the

bind-address           = 0.0.0.0
# skip-networking
7 directive may not be present. In this case, add it under the
sudo systemctl restart mysql
9 section.

Once done, restart the MySQL service for changes to take effect. Only root or users with sudo privileges can restart services.

To restart the MySQL service on Debian or Ubuntu, type:

sudo systemctl restart mysql

On RedHat based distributions like CentOS to restart the service run:

sudo systemctl restart mysqld

Granting Access to a User from a Remote Machine

The next step is to allow access to the database to the remote user.

Log in to the MySQL server as the root user by typing:

sudo mysql

If you are using the old, native MySQL authentication plugin to log in as root, run the command below and enter the password when prompted:

mysql -uroot -p

From inside the MySQL shell, use the

sudo systemctl restart mysqld
0 statement to grant access to the remote user.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Where:

  • sudo systemctl restart mysqld
    1 is the name of the database that the user will connect to.
  • sudo systemctl restart mysqld
    2 is the name of the MySQL user.
  • sudo systemctl restart mysqld
    3 is the IP address from which the user will connect. Use
    sudo systemctl restart mysqld
    4 to allow the user to connect from any IP address.
  • sudo systemctl restart mysqld
    5 is the user password.

For example, to grant access to a database

sudo systemctl restart mysqld
6 to a user named
sudo systemctl restart mysqld
7 with password
sudo systemctl restart mysqld
8 from a client machine with IP
sudo systemctl restart mysqld
9, you would run:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Configuring Firewall

The last step is to configure your firewall to allow traffic on port

sudo mysql
0 (MySQL default port) from the remote machines.

Iptables

If you are using iptables as your firewall, the command below will allow access from any IP address on the Internet to the MySQL port. This is very insecure.

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Allow access from a specific IP address:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW is the default firewall tool in Ubuntu. To allow access from any IP address on the Internet (very insecure), run:

bind-address           = 0.0.0.0
# skip-networking
0

Allow access from a specific IP address:

bind-address           = 0.0.0.0
# skip-networking
1

FirewallD

FirewallD is the default firewall management tool in CentOS. To allow access from any IP address on the Internet (very insecure) type:

bind-address           = 0.0.0.0
# skip-networking
2

To allow access from a specific IP address on a specific port, you can either create a new FirewallD zone or use a rich rule. Well create a new zone named

sudo mysql
1:

bind-address           = 0.0.0.0
# skip-networking
3

Verifying the Changes

To verify that the remote user can connect to the MySQL server, run the following command:

bind-address           = 0.0.0.0
# skip-networking
4

Where

sudo systemctl restart mysqld
2 is the name of the user you granted access to, and
sudo mysql
3 is the IP address of the host where the MySQL server runs.

If everything is setup up correctly, you will be able to login to the remote MySQL server.

If you get an error like below, then either port 3306 is not open , or the MySQL server is not listening on the IP address .

bind-address           = 0.0.0.0
# skip-networking
5

The error below is indicating that the user you are trying to log in with doesn’t have permission to access the remote MySQL server.

bind-address           = 0.0.0.0
# skip-networking
6

Conclusion

MySQL, the most popular open-source database server by default, listens for incoming connections only on localhost.

MySQL masuk ke dalam jenis apa?

MySQL juga termasuk ke dalam RDBMS atau Relational Database Management System, dimana di dalam struktur databasenya sehingga ketika proses pengambilan data menggunakan metode relational database. Yang juga menjadi penghubung antara perangkat lunak dan database server.

Bagaimana cara masuk ke MySQL?

MySQL Membuat Database dan Table.
Buka command prompt dengan cara tekan ctrl + R keudian ketik cmd lalu enter..
Buka MySQL dengan cara mengetikan cd AppServ\MySQL\bin\MySQL..
Bila meminta password, masukkan password yang kalian buat (tapi biasanya password defaultnya “root”).

Bagaimanakah cara melakukan remote user pada server MySQL?

Cara Remote Database MySQL di cPanel dengan Langkah Mudah.
1. Login ke cPanel. ... .
2. Buka Fitur Remote MySQL. ... .
Masukkan IP Address. ... .
4. Download dan Install Aplikasi Remote MySQL Navicat. ... .
Hubungkan Navicat dengan Database MySQL. ... .
6. Lakukan Uji Coba Koneksi. ... .
7. Mengatur Tabel pada Database. ... .
8. Cara Menghapus Akses Remote Database..

Apakah MySQL itu server?

Jadi, MySQL adalah database server yang gratis dengan lisensi GNU General Public License (GPL) sehingga dapat Anda pakai untuk keperluan pribadi atau komersil tanpa harus membayar lisensi yang ada. Seperti yang sudah disinggung di atas, MySQL masuk ke dalam jenis RDBMS (Relational Database Management System).