【PostgreSQL】入门篇——如何创建、删除和管理数据库及其用户,包括权限设置和角色管理

PostgreSQL 数据库及用户管理

  1. 创建数据库
    1.1 使用 SQL 命令创建数据库
    在 PostgreSQL 中,可以使用 CREATE DATABASE 命令来创建数据库。以下是基本语法:

CREATE DATABASE database_name;

示例:

CREATE DATABASE my_database;

1.2 使用 psql 命令行工具创建数据库
打开终端或命令提示符。

使用 psql 连接到 PostgreSQL 服务器:

psql -U username -h hostname

输入以下命令创建数据库:

CREATE DATABASE my_database;

  1. 删除数据库
    2.1 使用 SQL 命令删除数据库
    使用 DROP DATABASE 命令可以删除数据库。基本语法如下:

DROP DATABASE database_name;

示例:

DROP DATABASE my_database;

2.2 注意事项
只能在没有连接到该数据库的情况下删除它。
删除数据库是不可逆的,所有数据将被永久删除。

  1. 创建用户
    3.1 使用 SQL 命令创建用户
    在 PostgreSQL 中,可以使用 CREATE USER 命令创建用户。基本语法如下:

CREATE USER username WITH PASSWORD ‘password’;

示例:

CREATE USER my_user WITH PASSWORD ‘secure_password’;

  1. 删除用户
    4.1 使用 SQL 命令删除用户
    使用 DROP USER 命令可以删除用户。基本语法如下:

DROP USER username;

示例:

DROP USER my_user;

  1. 管理用户权限
    5.1 授予权限
    使用 GRANT 命令可以授予用户权限。基本语法如下:

GRANT privilege_type ON object TO username;

示例:

GRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;

5.2 撤销权限
使用 REVOKE 命令可以撤销用户的权限。基本语法如下:

REVOKE privilege_type ON object FROM username;

示例:

REVOKE ALL PRIVILEGES ON DATABASE my_database FROM my_user;

  1. 角色管理
    PostgreSQL 中的角色可以是用户或用户组。可以使用角色来管理多个用户的权限。

6.1 创建角色
CREATE ROLE role_name;

示例:

CREATE ROLE my_role;

6.2 将角色赋予用户
GRANT role_name TO username;

示例:

GRANT my_role TO my_user;

6.3 授予角色权限
GRANT privilege_type ON object TO role_name;

示例:

GRANT ALL PRIVILEGES ON DATABASE my_database TO my_role;

  1. 可能出现的问题及解决办法
    7.1 无法连接到数据库
    问题描述: 当尝试连接到数据库时,可能会出现“FATAL: database does not exist”或“FATAL: role does not exist”的错误。

解决办法:

确保数据库或角色名称拼写正确。
使用 \l 命令查看所有数据库,确认数据库是否存在。
使用 \du 命令查看所有角色,确认角色是否存在。
7.2 权限不足
问题描述: 当尝试执行某些操作时,可能会出现“permission denied”错误。

解决办法:

检查用户是否具有执行该操作所需的权限。
使用 GRANT 命令授予所需权限。
确保用户连接到正确的数据库。
7.3 删除数据库失败
问题描述: 当尝试删除数据库时,可能会出现“database is being accessed by other users”的错误。

解决办法:

确保没有其他用户连接到该数据库。可以使用以下命令查看连接信息:

SELECT * FROM pg_stat_activity WHERE datname = ‘my_database’;

如果有连接,可以使用 pg_terminate_backend 函数终止连接:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = ‘my_database’;

7.4 用户无法登录
问题描述: 用户尝试登录时可能会遇到“FATAL: password authentication failed for user ‘username’”的错误。

解决办法:

确保用户密码正确。
检查 pg_hba.conf 文件中的身份验证方法,确保允许用户通过密码登录。

  1. 总结
    通过上述步骤,您可以在 PostgreSQL 中创建、删除和管理数据库及其用户,设置权限和角色。了解常见问题及其解决方法将帮助您更有效地管理 PostgreSQL 数据库。
    如果您在使用过程中遇到其他问题,建议查阅 PostgreSQL 官方文档或相关社区以获取更多支持。

原文链接:https://blog.csdn.net/thinking_chou/article/details/142622817

CentOS7 换源:换阿里云镜像源

1、下载CentOS 7的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2、更新镜像源
清除缓存:
yum clean all
生成缓存:
yum makecache


完整repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever – Updates – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a772304419/article/details/132147343

CentOS配置firewalld防火墙规则

firewall-cmd命令参数介绍

firewall-cmd –xx-
参数 功能
--get-default-zone 查询当前默认的区域名称
--set-default-zone=区域名称 设置默认的区域并使其永久生效
--get-zones 显示可用的区域
--get-services 显示命令支持的服务
--get-active-zones

显示当前正在使用的区域与网卡名称

Continue…

CentOS Stream 初始化

1、网络
IP设置:
/etc/NetworkManager/system-connections/*.nmconnection
nmcli命令可以配置此文件:
比如:
# nmcli connection modify ens192 +ipv4.routes “192.168.0.0/24 192.168.0.254, 192.168.2.0/24 192.168.0.254”
同:
route1=192.168.0.0/24,192.168.0.254
route2=192.168.2.0/24,192.168.0.254

2、时间
时区设置:
cd /etc
rm /etc/localtime -fr
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock –systohc
(同步硬件时间,无法使用NTP)

3、关闭SElinux
查看状态:/usr/sbin/sestatus -v
临时关闭SElinux: setenforce 0
永久关闭SElinux: vim /etc/selinux/config
SELINUX=disabled

4、修改SSH端口
启用SSH:默认启动
vim /etc/ssh/sshd_config
Port 22

5、关闭防火墙
关闭防火墙: systemctl stop firewalld
禁用防火墙: systemctl disable firewalld
查看防火墙状态: systemctl status firewalld

Linux硬盘的扩容技术指南(非LVM)

Linux硬盘是数据存储中极其重要的部分,在使用Linux操作系统时,用户常常需要对Linux硬盘进行扩容。扩容可以提供给用户更多的空间,让用户能够更加有效地利用硬盘作为数据存储。

在扩容Linux硬盘之前,用户需要做几件准备工作,包括对Linux系统环境的检查、检查硬件驱动器和更新固件。

下面,我们就以扩容Linux ext4分区为例,来详细介绍一下Linux硬盘的扩容技术:

Continue…

CentOS Stream 9安装PHP8.2

安装remi源

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

查看可以安装的PHP版本

dnf module list php
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name      Stream        Profiles                        Summary
php       remi-7.4      common [d], devel, minimal      PHP scripting language
php       remi-8.0      common [d], devel, minimal      PHP scripting language
php       remi-8.1      common [d], devel, minimal      PHP scripting language
php       remi-8.2      common [d], devel, minimal      PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

启用PHP8.2版本

dnf module enable php:remi-8.2

安装PHP扩展

dnf install php-fpm php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-mysqlnd php-pdo php-soap php-tidy php-xml php-xmlrpc php-opcache php-redis php-pecl-mcrypt -y

查看PHP版本

php -v
PHP 8.2.2 (cli) (built: Jan 31 2023 13:31:55) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.2, Copyright (c), by Zend Technologies

开启jit功能

cd /etc/php.d/

编辑扩展文件,在文件最后添加jit配置

vim 10-opcache.ini
opcache.jit_buffer_size=256M
opcache.jit=1255

重启PHP

systemctl restart php-fpm

查看jit是否开启成功

php -i|grep 'opcache.jit'
opcache.jit => 1255 => 1255
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 256M => 256M
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_prof_threshold => 0.005 => 0.005

设置PHP开机自启

systemctl enable php-fpm

转自:https://www.ggdoc.cn/archives/302

CentOS增加虚拟内存

1、查看磁盘使用情况
free -h

2、添加Swap分区
使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。
bs=1024 :单位数据块(block)同时读入/输出的块字节大小为1024 个字节即1KB,bs(即block size)。
count = 4194304 表示的是4G
具体计算公式为:1KB * 4194304 =1KB *1024(k)10244 = 4194304 =4G
如果有需要调整交换区的大小的话,可以自行设置其它的
执行完命令后,会进行4G读写操作,所以会有一些卡顿,请耐心等待。

3、对交换文件格式化并转换为swap分区
mkswap /var/swapfile

4、挂载并激活分区
swapon /var/swapfile
执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:
chmod -R 0600 /var/swapfile

5、查看新swap分区是否正常添加并激活使用
free -h

6、修改 fstab 配置,设置开机自动挂载该分区
echo “/var/swapfile swap swap defaults 0 0” >> /etc/fstab

7、查看是否已经使用了交换内存
top

更改Swap配置
一般默认的情况,当我们开启交换虚拟内存空间后,默认好像是当内存使用百分50的时候,就会开始使用交换空间,这样就会造成一个情况,就是本身物理内存还没有使用完成, 就去使用虚拟内存,这样肯定会影响我们的使用效率,那么我们怎么避免这个情况的发生呢?
答案就是:可以通过swappiness值进行管理,swappiness表示系统对Swap分区的依赖程度,范围是0~100,数值越大,依赖程度越高,也就是越高越会使用Swap分区。
所以,我们现在并不希望我们的机器过度依赖Swap分区,只有当我们 负载超过某个百分比的时候,才使用交换空间,所以这也决定了,我们这个值并不是非常大,一般设置 10 ~50 左右。
查看当前的swappiness数值:
cat /proc/sys/vm/swappiness
修改swappiness值,这里以10为例:
sysctl vm.swappiness=10
设置永久有效,重启系统后生效
echo “vm.swappiness = 10” >> /etc/sysctl.conf
最后再次通过top命令,能够查看到,交换空间是否被使用
swap分区的删除
swap分区的删除,仅用于以后删除分区时候使用,如果你现在是增加虚拟内存,那么可以忽略这一步

1、停止正在使用swap分区
swapoff /var/swapfile

2、删除swap分区文件
rm -rf /var/swapfile

3、删除或注释掉我们之前在fstab文件里追加的开机自动挂载配置内容
vim /etc/fstab
把下面内容删除
/var/swapfile swap swap defaults 0 0

原文链接:https://blog.csdn.net/weixin_59262008/article/details/125671728

CentOS 添加新硬盘

一、添加新硬盘,查看硬盘情况
输入fdisk -l 查看系统磁盘,查看到/dev/sdb 为新添加的100G磁盘

二、对新添加的硬盘进行分区
2.1 fdisk /dev/sdb
2.2 输入n 新建硬盘分区
2.3 输入p 建立主分区(如输入e 表示建立扩展分区) 回车
2.4 输入分区号1-4, 默认为1 回车
2.5 输入起始扇区数,默认2048 按回车确认
2.6 按q 退出

三、格式化新添加的硬盘
3.1 mkfs -t ext4 /dev/sdb #将硬盘格式化为 ext4 格式
3.2 按y回车确认,格式化完成

四、挂载新硬盘
4.1 mkdir -p /mnt/dev1 #在/mnt 下创建一个目录 用于挂载新硬盘(创建目录路径根据自己需求自定义)
4.2 mount /dev/sdb /mnt/dev1 #将/dev/sdb 硬盘挂载到/mnt/dev1 目录下

五、查看新硬盘挂载情况
df -h

六、取消硬盘挂载
umount /dev/sdb #取消硬盘挂载,如想挂载到其他目录,重复步骤五

七、设置开机自动挂载
vim /etc/fstab 添加 /dev/sdb /mnt/dev1 ext4 defaults 0 1

Centos安装unrar并使用

https://www.rarlab.com/download.htm

wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
解压安装包到指定目录
tar xf rarlinux-x64-6.0.2.tar.gz -C /usr/local/
创建软连接
ln -s /usr/local/rar/rar /usr/local/bin/rar
ln -s /usr/local/rar/unrar /usr/local/bin/unrar

常用命令解压压缩文件到当前目录

unrar e test.rar
用绝对路径解压文件

unrar x test.rar
列出压缩包中的文件列表信息(简单)

unrar l test.rar
列出压缩包中的文件列表信息(详细)

unrar v test.rar
测试压缩文件


如果运行没问题则证明安装成功,如果报Couldn’t find path to unrar library则还需要系统编译安装unrar

安装依赖包
yum install -y gcc gcc-c++
下载unrar包
wget http://www.rarlab.com/rar/unrarsrc-5.4.5.tar.gz
tar zxf unrarsrc-5.4.5.tar.gz
cd unrar
编译、安装
make lib
make install-lib
使用make lib命令将会自动编译库文件,再使用make install-lib命令产生 libunrar.so 文件(一般在 /usr/lib 目录下面)

配置环境变量
vim /etc/profile
在末尾加上以下语句并保存
export UNRAR_LIB_PATH=/usr/lib/libunrar.so
使用以下命令使变量生效
source /etc/profile
再次执行第二步就不会报错了

原文链接:https://blog.csdn.net/qq_15603633/article/details/118731452