MySQL Allow IP Address, Linux Allow IP Address

🐬 MySQL Commands

πŸ”“ (Temporary) Allow ALL IPs

GRANT ALL PRIVILEGES ON *.* TO 'database_name'@'%' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

πŸ” Remove β€œallow all” (%)

DROP USER 'database_name'@'%';

βœ… Allow Specific IP

GRANT ALL PRIVILEGES ON your_database.* TO 'database_name'@'192.168.42.1' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

βœ… Allow Subnet (per building)

GRANT ALL PRIVILEGES ON your_database.* TO 'database_name'@'192.168.18.%';<br>GRANT ALL PRIVILEGES ON your_database.* TO 'database_name'@'192.168.42.%';<br>GRANT ALL PRIVILEGES ON your_database.* TO 'database_name'@'192.168.100.%';<br>FLUSH PRIVILEGES;

πŸ” Check Allowed IPs

SELECT user, host FROM mysql.user WHERE user = 'database_name';

πŸ” Check Permissions

SHOW GRANTS FOR 'database_name'@'192.168.42.%';

🐧 Linux / Server Commands

πŸ”₯ Allow MySQL Port (ALL β€” testing only)

sudo ufw allow 3306

πŸ” Allow Specific Subnet (recommended)

sudo ufw allow from 192.168.18.0/24 to any port 3306
sudo ufw allow from 192.168.42.0/24 to any port 3306
sudo ufw allow from 192.168.100.0/24 to any port 3306

πŸ” Check Firewall Rules

sudo ufw status

βš™οΈ Enable Remote MySQL Access

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

Set:

bind-address = 0.0.0.0

πŸ”„ Restart MySQL (only if config changed)

sudo systemctl restart mysql

πŸ§ͺ Test Connection

mysql -u database_name -p -h your_server_ip