如何通过Ubuntu终端用自定义超级用户rahi007创建本地可访问数据库
解决PostgreSQL终端访问及设置用户为数据库所有者的实操步骤
1. 先搞定终端连接问题
终端没法操作大概率是连接配置或身份验证的问题,按下面步骤来:
- 切换到系统默认的PostgreSQL管理员用户:
sudo su - postgres - 用rahi007身份尝试连接默认的postgres数据库:
psql -U rahi007 -d postgres -h localhost
如果报密码错误,先给rahi007设置密码:
在postgres用户的psql会话里执行:ALTER USER rahi007 WITH PASSWORD 'your_strong_password'; - 要是连接还是失败,检查
pg_hba.conf配置:
编辑配置文件(替换成你的PostgreSQL版本,比如14):sudo nano /etc/postgresql/14/main/pg_hba.conf
找到127.0.0.1/32对应的行,把认证方式改成md5:host all all 127.0.0.1/32 md5
保存后重启服务:sudo systemctl restart postgresql
2. 把rahi007设为数据库所有者
假设你要操作的数据库叫target_db(换成你实际的数据库名):
- 方式一:通过psql命令行修改
切换到postgres用户后进入psql:psql
执行以下命令修改数据库所有者:ALTER DATABASE target_db OWNER TO rahi007;
要是需要把数据库里的表、序列也转成rahi007所有(避免后续权限问题):ALTER SCHEMA public OWNER TO rahi007; ALTER ALL TABLES IN SCHEMA public OWNER TO rahi007; ALTER ALL SEQUENCES IN SCHEMA public OWNER TO rahi007; - 方式二:直接在终端单条命令执行
切换到postgres用户后,运行:psql -c "ALTER DATABASE target_db OWNER TO rahi007;"
3. 验证配置是否生效
- 用rahi007身份连接目标数据库:
psql -U rahi007 -d target_db -h localhost - 查询数据库所有者:
SELECT datname, datowner FROM pg_database WHERE datname = 'target_db';
输出里datowner字段应该显示rahi007 - 测试权限:创建一张测试表
CREATE TABLE test (id INT);
能成功创建就说明权限没问题
内容的提问来源于stack exchange,提问作者Raihanul Haque Rahi
相关产品推荐
相关产品推荐

