在Docker环境中,对已运行的PostgreSQL数据库实例进行密码更改是一项常见的维护操作。下面将详述如何通过一系列命令行操作来实现这一目标。
修改方式
查看容器状态及信息
我们需要定位到正在运行的PostgreSQL容器以获取其相关信息。执行以下命令列出所有正在运行的Docker容器及其基本信息:
shell
docker ps
进入PostgreSQL容器
确定了PostgreSQL容器的ID或名称后,使用 docker exec
,命令进入该容器的交互式Shell环境:
shell
docker exec -it <postgresql> /bin/sh
这里的<postgresql>
,应替换为实际的容器名称或ID,以便我们能进入到PostgreSQL容器的内部bash shell中进行后续操作。
切换至postgres用户
为了能够对数据库进行管理操作,包括密码修改,需要切换至具有足够权限的postgres
用户,来登录数据库
shell
su postgres
连接PostgreSQL数据库
shell
psql -U postgres
这条命令将以postgres
的用户身份登录到PostgreSQL数据库,进入一个SQL命令提示符界面。
修改postgres用户密码
在数据库命令行环境下,执行ALTER USER语句来更改 postgres
用户的密码
shell
Alter user postgres with password '123456';
请将 '123456'替换为你想要设置的新密码。执行此命令后,postgres用户的密码即被更新为新设定值。
退出数据库连接
shell
\q
重启PostgreSQL数据库
docker run 启动数据库的时候设置了
POSTGRES_PASSWORD
值,是容器初始化的时候,postgresql 数据库的密码,数据库重启不受此参数影响,但是docker inspect
显示的值不变,还是最初启动的时候的值
shell
docker restart postgresql_test
常用命令
查看数据库列表
shell
\l
这将显示所有可用的数据库。
切换数据库
shell
\c <database_name>
将 <database_name>
替换为您要切换的数据库名称。按下 Enter 键后,您将切换到指定的数据库。
查看表列表
shell
\dt
这将显示当前数据库中的所有表。
删除数据库
shell
DROP DATABASE <database_name>;
其中 <database_name>
是要删除的数据库名称。请注意,删除数据库将永久删除其中的所有数据,请谨慎操作。
删除表
shell
DROP TABLE <table_name>;
其中 <table_name>
是要删除的表名称。请注意,删除表将永久删除其中的所有数据,请谨慎操作。
清空表
shell
TRUNCATE TABLE <table_name> CASCADE;
将 <table_name>
替换为您要清空的表的名称。如果要清空多个表,可以在一条命令中使用多个 TRUNCATE TABLE
语句。
注意事项
修改完 postgresql 的密码之后,一定要保存好密码,在使用 docker inspect postgresql_test
去查看容器的信息的时候,显示的 POSTGRES_PASSWORD
值,已经跟实际密码不一样了