вопрос
Сегодня я изменил номер порта pg на 54328. После перезапуска базы данных я не смог ввести psql напрямую в базу данных.
[postgres@iZ8vbifqgkwljcq9ccpkg7Z data]$ psql
psql: не удалось подключиться к серверу: такого файла или каталога нет.
Сервер работает локально и принимает
соединения через сокет домена Unix "/tmp/.s.PGSQL.5432"
решение
На данный момент существует два способа входа в базу данных.
- psql, за которым следует номер порта
[postgres@iZ8vbifqgkwljcq9ccpkg7Z ~]$ psql
Password for user postgres:
psql (12.7)
Type "help" for help.
postgres=#
- Добавьте предложение в переменную среды /usr/local/pgsql/.bash_profile и добавьте источник.
[postgres@iZ8vbifqgkwljcq9ccpkg7Z ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export PGPORT=54328 #自己添加的环境变量
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
Некоторый опыт эксплуатации
- После установки базы данных или другого часто используемого программного обеспечения не забудьте изменить порт по умолчанию, шифрование пароля и сложные настройки, чтобы предотвратить атаки вредоносных вирусов (или программного обеспечения для майнинга).
Автор столкнулся с атакой со стороны программного обеспечения для майнинга, потому что он использовал пользователя postgres по умолчанию (с тем же паролем).Поскольку права внешнего доступа были освобождены (IP файла конфигурации: 0.0.0.0 все все), брандмауэр не установил политика безопасности и вирус. После грубого взлома пароля в каталоге пользователя после входа в систему создается файл "authorized_keys", в котором хранится открытый ключ RSA. Другой сервер может хранить известный открытый ключ для пароля. -бесплатный вход в систему (даже если вы измените пароль пользователя базы данных, это не поможет)), и добавьте cur...a.sh в переменную среды .bash_profile в вашем пользовательском каталоге, чтобы загрузить инструкции скрипта майнера (даже если вы удалите вирус, он будет загружаться и запускаться снова каждый раз при смене пользователя). Он будет загружен в скрытый каталог... (например, /var/tmp/.../***). Вы можете найти и удалить это через find/-name... и одновременно удалите ненормальные процессы и файлы авторизованных_ключей сверху.
- После установки postgreSql системный пользователь postgres будет создан в качестве пользователя базы данных по умолчанию. Вам необходимо переключиться на пользователя su — postgres для выполнения операций с базой данных и psql для подключения и входа в систему.
- Таблица секционированных данных экспортируется в виде файла *.sql через клиент Navicat. При повторном импорте возникнут ошибки. Вы можете использовать клиент psql для полного экспорта и импорта базы данных:
1、在服务器A上导出文件
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 数据库名>c:\mydb.bak
2、在B服务器上创建同名数据库
postgres=# create database 数据库名 <owner username>; -- 创建数据库指定所属者,不指定默认当前的用户postgres
CREATE DATABASE
postgres=#
3、将文件拷到服务器B上面,执行如下命令
psql -h 127.0.0.1 -p 5432 -U postgres -d 数据库名 –f /usr/data/mydb.bak
(已登录:psql -d 数据库名 -U postgres -f dump.sql)
- Изменить пароль базы данных
postgres=# ALTER USER postgres With PASSWORD '123456'; #Установить пароль
ALTER ROLE
postgres=#
- Консольные команды
\q: Выход.
\h: Просмотр объяснения команды SQL, например \h select.
?: просмотреть список команд psql.
\l: список всех баз данных.
\c [имя_базы_данных]: подключение к другим базам данных.
\d: список всех таблиц в текущей базе данных.
\d [имя_таблицы]: список структуры определенной таблицы.
\du: Список всех пользователей.
\e: Откройте текстовый редактор.
\conninfo: отображает текущую базу данных и информацию о соединении.
- Операции с базой данных
–Создать новую таблицу
CREATE TABLE user_tbl(name VARCHAR(20), Signup_date DATE);
–Вставить данные
INSERT INTO user_tbl(name, Signup_date) VALUES('Zhang San', '2013-12-22');
–Выбрать записи
SELECT * FROM user_tbl;
– Обновить данные
UPDATE user_tbl set name = '李思' WHERE name = '张三';
– Удалить записи
DELETE FROM user_tbl WHERE name = '李思' ;
– Добавить поля
ALTER TABLE user_tbl ADD email VARCHAR(40) ;
– Обновить структуру
ALTER TABLE user_tbl ALTER COLUMN Signup_date SET NOT NULL;
– Переименовать поле
ALTER TABLE user_tbl RENAME COLUMN Signup_date TO Signup;
– Удалить поле
ALTER TABLE user_tbl DROP COLUMN email;
– Переименовать
таблицу ALTER TABLE user_tbl RENAME TO backup_tbl;
– Удалить лист
УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ backup_tbl;