数据库问题汇总


记一次 pgsql 数据库连接数超出,导致服务无法正常访问的问题

--- 显示设置的最大连接数
show max_connections;

-- 根据用户名显示连接数
select usename, count(*) from pg_stat_activity group by usename order by count(*) desc;

-- 当前存活的连接数
SELECT count(*) FROM pg_stat_activity WHERE NOT pid=pg_backend_pid();
SELECT count(*) FROM pg_stat_activity;

-- 显示客户端连接数
SELECT * from pg_stat_activity;

-- 删除空闲连接数
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state='idle'

------------ 解决方案:在postgresql.conf中设置(默认为100修改大一些即可):
-- max_connections = 1000

-- 这样并没解决根本问题(导致连接数量增加,或是连接一直没有被释放。)
-- 原因可能是程序连接池 分配初始连接数过多。
-- 可以为每个平台系统分配不同的用户,根据用户占用的连接数分析出是哪个系统的原因,再具体分析原因。

MySQL/MariaDb 开启远程连接(解决:Host xxx is not allowed to connect to this MariaDb server)

------ 1.授权法(推荐)
-- %:表示从任何主机连接到mysql服务器,如果想允许指定ip,把%替换成对应的ip即可。
-- user:要进行授权的用户名
-- password:用户以后登录用的密码
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
-- 将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里,
-- 通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
FLUSH PRIVILEGES;

------ 2.改表法(不推荐)
use mysql;
update user set host='%' where user='root'  and host='localhost';
select host, user from user; -- 查看是否修改成功
FLUSH RIVILEGES;

文章作者: 慕书
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 慕书 !
评论
  目录