Перевод сборника команд Unix ToolBox. Часть 11 Базы данных

527

Прошу прощения за паузу. Снова возвращаюсь к публикации перевода сборника команд Unix ToolBox. Сегодня речь пойдет о такой важной составляющей цифровой информации как базы данных, точнее управлении ими с помощью консольных команд. Например если вы собираете информацию о том, как можно заработать на своем сайте, то и для этого можно создать базу данных и отсортировать информацию по релевантности или по дате.

Собранные ниже команды позволяют администрировать пользователей баз данных, управлять удаленным доступом,  и предоставлять привилегии.  Также вы узнаете как можно делать резервные копии данных и затем восстанавливать из них базу.

Базы данных

PostgreSQL
Смена пароля root или пароля пользователя.
# psql -d template1 -U pgsql
> alter user pgsql with password ‘pgsql_password’; # Используйте username вместо «pgsql»
Создание пользователя и базы данных

Команды createuser, dropuser, createdb и dropdb, это эквиваленты SQL команд.

# createuser -U pgsql -P bob # Создание пользователя bob,-P для ввода пароля.
# createdb -U pgsql -O bob bobdb # Создать базу данных bobdb, владелец bob
# dropdb bobdb # Удалить базу дфнных bobdb
# dropuser bob # Удалить пользователя bob

Основной механизм авторизации в базе, настраивается в файле pg_hba.conf.

Разрешить удаленный доступ к базе данных

Файл $PGSQL_DATA_D/postgresql.conf определяет слушающие адреса. Обычно listen_addresses = ‘*’ для Postgres 8.x.

Файл $PGSQL_DATA_D/pg_hba.conf назначает уровни доступа. Пример:

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host bobdb bob 212.117.81.42 255.255.255.255 password
host all all 0.0.0.0/0 password
Резервное копирование и восстановление баз данных

Резервное копирование и восстановление делается пользователем pgsql или postgres.

Резервное копирование и восстановление одной базы данных, пример:

# pg_dump —clean dbname > dbname_sql.dump
# psql dbname < dbname_sql.dump

Резервное копирование и восстановление всех баз(включая пользователей):

# pg_dumpall —clean > full.dump
# psql -f full.dump postgres
Базы данных MySQL
Смена пароля root или пароля пользователя.
Способ 1
# /etc/init.d/mysql stop
или
# killall mysqld
# mysqld —skip-grant-tables
# mysqladmin -u root password ‘newpasswd’
# /etc/init.d/mysql start
Способ 2
# mysql -u root mysql
mysql> UPDATE USER SET PASSWORD=PASSWORD(«newpassword») where user=’root’; # Используйте имя «пользователя» вместо «root»
mysql> FLUSH PRIVILEGES;
mysql> quit
Создание пользователя создание базы данных.
# mysql -u root mysql
mysql> CREATE DATABASE bobdb; # Cоздать базу данных bobdb
mysql> GRANT ALL ON *.* TO ‘bob’@’%’ IDENTIFIED BY ‘pwd’; # Используйте localhost вместо % что-бы запретить доступ к базе данных извне
# % — Разрешает сетевой доступ пользователя с любого IP адреса
mysql> DROP DATABASE bobdb; # Удалмть базу данных.
mysql> DROP USER bob; # Удалить пользователя bob.
mysql> DELETE FROM mysql.user WHERE user=’bob and host=’hostname’; # Альтернативы
mysql> FLUSH PRIVILEGES;
Разрешить удаленный доступ

Обычно удаленный доступ разрешен не ко всем базам данных. В файл /etc/my.cnf прописан адрес для слушающего сокета, как правило достаточно раскомментировать строку bind-address =

# mysql -u root mysql
mysql> GRANT ALL ON bobdb.* TO bob@’xxx.xxx.xxx.xxx’ IDENTIFIED BY ‘PASSWORD’;
mysql> REVOKE GRANT OPTION ON foo.* FROM bar@’xxx.xxx.xxx.xxx’;
mysql> FLUSH PRIVILEGES;
Резевное копирование и восстановление баз данных mysql

Работа с одной базой данных:

# mysqldump -u root -psecret —add-drop-database dbname > dbname_sql.dump
# mysql -u root -psecret -D dbname < dbname_sql.dump

Работа со всеми базами данных:

# mysqldump -u root -psecret —add-drop-database —all-databases > full.dump
# mysql -u root -psecret < full.dump

В данном случае «secret«, пароль пользователя root для mysql, после опции -p, пробел не ставится. Если опция -p будет использована без следеющего за ней пароля, он будет запрошен интерактивно.

Базы данных sqlite

SQLite небольшая, достаточно мощная, самодостаточная, неконфигурируемая база данных.

Дамп и восстановление

Вам может понадобится сделать дамп и восстановление базы SQLite. Например можно отредактировать файл дампа, поменять атрибуты или типы колонок а затем восстановить базу. Это проще чем ковыряться с SQL командами.

# sqlite database.db .dump > dump.sql # Сделать резервную копию
# sqlite database.db < dump.sql # Восстановление дампа Конвертирование 2.x базы в 3.x sqlite database_v2.db .dump | sqlite3 database_v3.db