Bootstrap

从Windows远程访问Linux上的数据库

从Windows远程访问Linux上的数据库

目录

简介

在学习数据库时,我们通常在本地(localhost)主机上进行操作。然而,随着技能的增长,你可能会想要尝试从另一台机器(如Windows)远程访问Linux上的数据库。本文将详细介绍如何在Linux上安装MySQL/MariaDB,并配置其允许从Windows远程访问。

在Linux上安装MySQL/MariaDB

首先,确保你已经在Linux系统上安装了MySQL或MariaDB。如果还没有安装,请参考官方文档或使用包管理器进行安装。

配置MySQL/MariaDB以允许远程连接

默认情况下,MySQL/MariaDB只允许来自localhost的连接。为了允许远程连接,你需要进行以下配置:

修改MySQL/MariaDB配置文件

编辑MySQL/MariaDB的配置文件(通常是/etc/mysql/my.cnf/etc/my.cnf),找到[mysqld]部分,并添加或修改以下行:

bind-address = 0.0.0.0

这将使MySQL/MariaDB监听所有网络接口,而不仅仅是localhost

重启MySQL/MariaDB服务

保存配置文件后,重启MySQL/MariaDB服务以应用更改:

sudo systemctl restart mysql
# 或者对于MariaDB:
sudo systemctl restart mariadb

确保防火墙允许MySQL/MariaDB端口

确保你的防火墙规则允许外部访问MySQL/MariaDB的默认端口(3306)。你可以使用ufw来管理防火墙规则:

sudo ufw allow 3306/tcp

创建远程访问用户

为了安全起见,建议创建一个专门用于远程访问的用户,而不是直接使用root用户。以下是创建远程用户的步骤:

创建win_root用户

登录到MySQL/MariaDB:

mysql -u root -p

创建一个名为win_root的用户,允许从任意IP地址访问:

CREATE USER 'win_root'@'%' IDENTIFIED BY '123456';

查看用户表

你可以查看当前的用户及其允许连接的主机:

USE mysql;
SELECT user, host FROM user;

你应该能看到win_root用户被设置为可以从任意IP地址访问。

授予用户权限

授予win_root用户所有权限,并允许其授予权限给其他用户:

GRANT ALL PRIVILEGES ON *.* TO 'win_root'@'%' WITH GRANT OPTION;

刷新权限以使更改生效:

FLUSH PRIVILEGES;

测试远程连接

检查网络连通性

确保Linux服务器和Windows客户端之间的网络是连通的。你可以使用ping命令来测试:

在Windows上打开命令提示符,输入:

ping <Linux服务器的IP地址>

如果能够成功Ping通,说明网络连接正常。

使用图形化工具连接

使用图形化工具(如DataGrip、MySQL Workbench等)进行连接。配置连接时,注意以下几点:

  • 主机名:填写Linux服务器的IP地址,而不是localhost
  • 用户名:填写win_root
  • 密码:填写你在创建用户时设置的密码(例如123456)。

创建和查询表

创建学生表

假设你想创建一个简单的students表,可以在MySQL/MariaDB中执行以下SQL语句:

CREATE DATABASE school;

USE school;

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    grade VARCHAR(10)
);

插入数据

插入一些示例数据:

INSERT INTO students (name, age, grade) VALUES
('张三', 15, '初三'),
('李四', 16, '高一'),
('王五', 17, '高二');

查询数据

查询表中的所有记录:

SELECT * FROM students;

你应该会看到类似以下的结果:

idnameagegrade
1张三15初三
2李四16高一
3王五17高二

注意事项

  • 安全性:虽然创建了一个允许从任意IP地址访问的用户,但在生产环境中,建议限制访问范围,只允许特定的IP地址访问。例如,如果你知道Windows客户端的固定IP地址,可以将其替换为具体的IP地址,而不是使用%

    CREATE USER 'win_root'@'192.168.1.100' IDENTIFIED BY '123456';
    
  • 防火墙配置:确保防火墙规则只允许信任的IP地址访问MySQL/MariaDB端口。你可以使用ufw或其他防火墙工具来配置更严格的规则。

  • SSL/TLS加密:在生产环境中,建议启用SSL/TLS加密,以保护数据传输的安全性。你可以参考MySQL/MariaDB的官方文档来配置SSL/TLS。

  • 定期备份:定期备份数据库,以防止数据丢失。你可以使用mysqldump工具来创建备份。

  • 日志监控:启用日志记录功能,监控数据库的访问和操作情况。你可以通过配置general_logslow_query_log来记录详细的日志信息。


;