在 Linux 上创建数据库服务器地址,核心是先装好数据库服务,然后把监听 IP 和端口配置成你要用的地址,再创建对应账号并放通防火墙,客户端才能通过这个地址连上来。 很多人把“创建数据库服务器地址”理解成单纯改一个 IP,其实它是一套链路:数据库监听什么地址、客户端用什么地址去连、中间有没有被防火墙拦下来,这三件事缺一不可。
linux数据库服务器地址怎么配置?先分清三个概念
你要先弄清楚“数据库服务器地址”具体指哪个层面,否则后面配置容易懵。
- 监听地址:数据库进程只在这个 IP 上等待连接,默认情况下 MySQL 只监 listening 在 127.0.0.1,PostgreSQL 也只监听 localhost,这个地址就是数据库对外提供的服务地址。
- 客户端连接地址:你从别的机器连数据库时,在命令、连接串或可视化工具里填的 IP/域名和端口,这个地址必须跟监听地址能对上。
- 主机名与解析:有些环境用主机名代替 IP,那就要保证 DNS 或 /etc/hosts 里能解析到正确的 IP,地址不光是 IP,还包含端口号。
简单说,你要在 Linux 上创建数据库服务器地址,实际上要做三件事:设置监听 IP、创建数据库用户、放通访问端口,下面按步骤拆开讲。
linux下创建数据库服务器地址的完整步骤:从安装到连接
安装数据库服务并确认运行状态
不同发行版用的包管理器不一样,但思路一致,以最常见的 MySQL/MariaDB 为例:
# Debian/Ubuntu sudo apt update && sudo apt install mysql-server -y # CentOS/RHEL sudo yum install -y mysql-server sudo systemctl enable --now mysqld
如果是 PostgreSQL:
sudo apt install postgresql postgresql-contrib -y sudo systemctl enable --now postgresql
安装完成后,先用 ss -lntp 看一下当前监听情况,这时候通常看到数据库只监听在 127.0.0.1,也就是说只能本机访问,外部根本连不上。
修改绑定地址:让数据库不再只听本地
这一步才是真正“创建数据库服务器地址”的关键操作,数据库默认为了安全只监听本地回环地址,你要改成实际对外提供服务的 IP,或者用 0.0.0 表示监听所有网卡。
linux下mysql数据库服务器地址设置
MySQL 的配置文件通常叫 /etc/mysql/mysql.conf.d/mysqld.cnf,或者 /etc/my.cnf,找到 [mysqld] 段落,修改:
[mysqld] bind-address = 0.0.0.0 port = 3306
0.0.0 是通用写法,表示服务器上所有 IP 地址都可以作为数据库服务器地址,如果你只想暴露某一个内网 IP,就改成具体的 IP,
bind-address = 192.168.1.20
改完重启:
sudo systemctl restart mysql
再看监听状态:
ss -lntp | grep 3306
看到 0.0.0:3306 或者 168.1.20:3306,说明监听地址生效了。
postgresql绑定服务器地址的配置方法
PostgreSQL 要改两个文件,比 MySQL 多一步认证配置。
先打开 postgresql.conf:
sudo vim /etc/postgresql/15/main/postgresql.conf
找到 listen_addresses,默认是 'localhost',改成:
listen_addresses = '0.0.0.0' port = 5432
然后还要改 pg_hba.conf,否则即使监听地址变了,外部 IP 也会被认证规则挡掉,在文件末尾加一行:
host all all 0.0.0.0/0 scram-sha-256
0.0.0/0 表示允许所有 IP 连接,生产环境最好限制为具体网段,重启服务:
sudo systemctl restart postgresql
创建数据库和访问账号
有了监听地址,还得有账号才能连,MySQL 先登录本地命令行:
mysql -u root -p
然后创建数据库和用户,并授予远程访问权限:
CREATE DATABASE myapp CHARACTER SET utf8mb4; CREATE USER 'appuser'@'%' IDENTIFIED BY 'YourStrongPass'; GRANT ALL PRIVILEGES ON myapp. TO 'appuser'@'%'; FLUSH PRIVILEGES;
这里的 表示允许从任何 IP 连接,你可以换成 '192.168.1.%' 限制网段,这个步骤完成后,客户端连接地址就真正能用了。
PostgreSQL 这边,切换系统用户后操作:
sudo su - postgres psql
CREATE DATABASE myapp; CREATE USER appuser WITH PASSWORD 'YourStrongPass'; GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser;
还要记得授权 schema 访问权,否则远程建表会报权限错:
\c myapp GRANT ALL ON SCHEMA public TO appuser;
防火墙和云安全组放行端口
监听配置再正确,防火墙不放行也是白搭,Linux 本机防火墙要看工具类型。
如果用 firewalld:
sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
如果是 ufw:
sudo ufw allow 3306/tcp
如果用裸的 iptables,直接加规则:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
如果服务器是云主机,光改 Linux 防火墙还不够,云平台控制台里的安全组入方向规则也要放通对应端口,这一步很多人漏掉,最后从外部连接时一直超时。
从另一台机器测试连接
地址配好后,用命令实际连一下,MySQL 客户端:
mysql -h 192.168.1.20 -P 3306 -u appuser -p
PostgreSQL 客户端:
psql "host=192.168.1.20 port=5432 user=appuser password=YourStrongPass dbname=myapp"
能正常进入数据库交互界面,说明这个“数据库服务器地址”已经创建成功,并且对外可见。
linux服务器数据库地址写错导致的常见问题排查
实际运维里,大多数连接失败不是数据库没装好,而是地址相关配置有偏差。
- 现象:ping 得通,但连接超时多半是防火墙或云安全组没有放行端口,行业共识认为,先把监听地址和防火墙对齐,再去折腾数据库配置。
- 现象:连接被拒绝(connection refused)数据库进程没有监听在该 IP 上,或者端口不对,用
ss -lntp确认监听状态。 - 现象:权限认证失败(Access denied)用户授权时的主机范围没覆盖你的客户端 IP,比如用户是
'appuser'@'localhost',你从远程连自然被拒,需要重新授权。 - 现象:本机能连,别的机器连不上大概率是
bind-address还是 127.0.0.1,这是新手最容易踩的坑。
业内专家指出,排查这类问题时,按“监听地址 → 防火墙 → 账号权限 → 客户端解析”的顺序来,比乱猜效率高得多。
如果你修改了 MySQL 的 bind-address 但连的是域名,还要确认域名解析到的是你绑定的那个 IP,在 Linux 客户端可以用 getent hosts 数据库域名 检查解析结果,有些场景下配置了多个网卡,绑定了 0.0.0 后所有 IP 都能连,但你实际填写的客户端地址必须是服务器上真实存在的 IP,不能随便编一个。
生产环境的地址规划建议
别只图省事全用 0.0.0,如果数据库在公网服务器上,绑定所有 IP 等于把库暴露在公网,风险很大,更稳妥的做法是绑定内网网卡的 IP,然后让应用服务器通过内网地址访问,数据库服务器地址最好是内网私有 IP,0.0.5 或 168.1.20,避免直接暴露公网端口,如果必须要公网访问,尽量搭配 SSL 连接和 IP 白名单。
Q&A:Linux数据库服务器地址相关的常见问题
数据库服务器地址是填 IP 还是主机名?
两种都行,但底层最终都会解析成 IP,如果你填主机名,那么客户端机器的 /etc/hosts 或 DNS 里必须有一条记录指向正确的服务器 IP,否则连接时解析失败,报“未知主机”,建议在配置文件中优先使用固定的内网 IP,减少 DNS 依赖。
绑定 0.0.0.0 和绑定具体 IP,客户端连接时有什么不同?
绑定 0.0.0 表示数据库监听该服务器上所有网卡的 IP,无论客户端访问的是内网 IP、公网 IP 还是 loopback 地址,只要端口对,都能连上,绑定具体 IP 时,只有访问那个 IP 才会建立连接,访问其他网卡的同一端口会被拒绝,从安全角度看,具体 IP 更可控,但换 IP 后需要同步修改配置。
修改监听地址后,客户端连接字符串里的地址怎么改?
客户端的连接地址必须写成你配置的监听 IP,再加上对应端口,MySQL 监听在 0.0.5:3306,客户端连接串就写 jdbc:mysql://10.0.0.5:3306/myapp 或命令行 mysql -h 10.0.0.5 -P 3306,如果监听改成了新地址,旧地址立即失效,客户端也需要跟着改成新的 IP,数据库本身不会做自动转发,这个事实说明,监听地址就是客户端唯一能使用的入口,改配置之前最好先确认客户端能改连接串。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/773203.html


