前言:
pgadmin4的用户密码以及pgadmin4创建的pg数据库的连接信息等等都是存放在sqlite数据库内的;而有的时候,可能会由于自己的问题将pgadmin4的密码忘记,这个时候需要重置pgadmin4的密码,或者是pgadmin4的密码输错多次,导致账号被锁定,这些操作都是可以通过sqlite3 这个程序直接修改sqlite内的相关表实现的
本文将讲述如何在命令行简单的操作sqlite数据库,实现pgadmin4的用户锁定状态的解除,以及重设用户密码这样的简单操作
一、
sqlite数据库登录和基本查询
在/var/lib/pgadmin目录下有一个db文件,该文件就是sqlite的实体文件,所有表结构,表数据等等对象都存放在此文件内
[root@localhost pgadmin]# pwd
/var/lib/pgadmin
[root@localhost pgadmin]# ls
azurecredentialcache pgadmin4.db sessions storage
[root@localhost pgadmin]# file pgadmin4.db
pgadmin4.db: SQLite 3.x database
可以看到,该文件的类型是数据库文件类型,是sqlite3的某个版本
登录数据库非常简单,sqlite3 数据库文件就可以了
[root@localhost pgadmin]# sqlite3 pgadmin4.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
退出登录是CTRL+d 或者 输入 .exit 即可,这里就不演示了
查询有哪些数据库---.database ,可以看到只有一个叫main的数据库
sqlite> .database
seq name file
--- --------------- ----------------------------------------------------------
0 main /var/lib/pgadmin/pgadmin4.db
查询有哪些表---.tables ,可以看到表比较多
sqlite> .tables
alembic_version roles_users
database server
debugger_function_arguments servergroup
keys setting
macros sharedserver
module_preference user
preference_category user_macros
preferences user_mfa
process user_preferences
query_history version
role
二、
查询表结构和更新表字段以更新密码和解除账号锁定
pragma table_info(user); 重置密码,账号锁定解除都是操作user表,这个是查看表结构,获取到表字段
sqlite> pragma table_info(user);
0|id|INTEGER|1||1
1|email|VARCHAR(256)|0||0
2|password|VARCHAR|0||0
3|active|BOOLEAN|1||0
4|confirmed_at|DATETIME|0||0
5|masterpass_check|VARCHAR(256)|0||0
6|username|VARCHAR(256)|1|''|0
7|auth_source|VARCHAR(256)|1|'internal'|0
8|fs_uniquifier|VARCHAR|1||0
9|locked|BOOLEAN|0|'false'|0
10|login_attempts|INTEGER|0|'0'|0
查看表数据有哪些,可以看到字段以 |分隔开,$pbkdf2-。。。。 这一串就是密码,但密码好像是md5加密
倒数第二是账号锁定状态,默认是没有锁定,false,倒数第一是登录失败次数,默认是0,登录失败三次就锁定账号了
sqlite> select * from user;
1|XXX@126.com|$pbkdf2-sha512$25000$FIJQKgVASGlNCQHAmLO2Fg$y.bruNhP4F/mt6avrpuNBlr8etMoBTo33zHtfCz9OspvK4O3D1TMEDJODJEXuqDxxqeFE1AMq7XX8Gb3BAD7yQ|1|||XXX@126.com|internal|060235abbbf242e99b9ed476561df6ac|false|0
🆗,输错几次密码后,再次查询user表,可以看到最后两个字段改变了,分别变成0和3
sqlite> select * from user;
1|XXX@126.com|$pbkdf2-sha512$25000$FIJQKgVASGlNCQHAmLO2Fg$y.bruNhP4F/mt6avrpuNBlr8etMoBTo33zHtfCz9OspvK4O3D1TMEDJODJEXuqDxxqeFE1AMq7XX8Gb3BAD7yQ|1|||XXX@126.com|internal|060235abbbf242e99b9ed476561df6ac|0|3
首先解除账号锁定,最后两个字段,locked修改为非0,false也可以,login_attempts更新为0就可以解除账号锁定了
sqlite> update user set locked=1 where username='XXX@126.com';
sqlite> update user set login_attempts=1 where username='XXX@126.com';
密码修改:
这个比较简单了,第二个字段更新就可以了,可以明文修改,例如修改为123456:
update user set password='123456' where username='XXX@126.com';
其实sqlite作为内嵌式数据库是比较简单的,因此,它的表结构什么的都是非常简单的,一般小项目内使用,会查询表,表结构,做一些简单的字段更新就完全🆗了