# psql -d template1 -U pgsql
> alter user pgsql with password 'pgsql_password'; # pgsql 為需要更改密碼的用戶名
命令 createuser
, dropuser
, createdb
和 dropdb
等同于 SQL 命令的快捷方式。我們創(chuàng)建一個新用戶叫 bob 和一個數(shù)據(jù)庫叫 bobdb;使用數(shù)據(jù)庫的超級用戶 pgsql 來創(chuàng)建:
# createuser -U pgsql -P bob # -P 會請求一個秘密
# createdb -U pgsql -O bob bobdb # 新數(shù)據(jù)庫 bobdn 的所有者是 bob
# dropdb bobdb # 刪除數(shù)據(jù)庫 bobdb
# dropuser bob # 刪除用戶 bob
一般數(shù)據(jù)庫認(rèn)證機制配置在 pg_hba.conf 文件中。
文件 $PGSQL_DATA_D/postgresql.conf
可指定綁定地址。對于 Postgres 8.x 通常為 listen_addresses = '*'
。
文件 $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 用戶來完成備份與恢復(fù)。下面是備份和恢復(fù)單個數(shù)據(jù)庫:
# pg_dump --clean dbname > dbname_sql.dump
# psql dbname < dbname_sql.dump
備份和恢復(fù)所有數(shù)據(jù)庫(包括用戶):
# pg_dumpall --clean > full.dump
# psql -f full.dump postgres
在這個例子中,你可以聲明任意現(xiàn)有的數(shù)據(jù)庫進行連接,但是如果你是向一個空的數(shù)據(jù)庫集群裝載,那么 postgres 應(yīng)該是比較好的選擇。
# /etc/init.d/mysql stopor# killall mysqld
# mysqld --skip-grant-tables
# mysqladmin -u root password 'newpasswd'
# /etc/init.d/mysql start
# mysql -u root mysql
mysql> UPDATE USER SET PASSWORD=PASSWORD("newpassword") where user='root';
mysql> FLUSH PRIVILEGES; # 使用用戶名替代"root"
mysql> quit
# mysql -u root mysqlmysql> CREATE DATABASE bobdb;
mysql> GRANT ALL ON *.* TO 'bob'@'%' IDENTIFIED BY 'pwd';
# 使用 localhost 替代 % 來限制網(wǎng)絡(luò)訪問
mysql> DROP DATABASE bobdb; # 刪除數(shù)據(jù)庫 bobdb
mysql> DROP USER bob; # 刪除用戶 bob
mysql> DELETE FROM mysql.user WHERE user='bob and host='hostname';
# 刪除 mysql 數(shù)據(jù)庫 user 表中 user=bob,host=hostname 的記錄
mysql> FLUSH PRIVILEGES;
遠(yuǎn)程訪問通常允許單個數(shù)據(jù)庫,而不是所有的數(shù)據(jù)庫。文件 /etc/my.cnf
包含約定的 IP 地址。通常為 bind-address =
綁定地址。
# mysql -u root mysqlmysql> 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; # 使用 'hostname' 也可為 '%' 來完全訪問
備份和恢復(fù)單個數(shù)據(jù)庫:
# mysqldump -u root -psecret --add-drop-database dbname > dbname_sql.dump
# mysql -u root -psecret -D dbname < dbname_sql.dump
備份和恢復(fù)所有的數(shù)據(jù)庫:
# mysqldump -u root -psecret --add-drop-database --all-databases > full.dump
# mysql -u root -psecret < full.dump
這里 mysql root 的密碼為 "secret",-p 選項后面沒有空格。當(dāng)單獨使用 -p 選項(不跟密碼),命令行提示符后會要求輸入密碼。
SQLite 是一個小而強大的、獨立的(self-contained)、無服務(wù)器的(serverless)、零配置的(zero-configuration) SQL 數(shù)據(jù)庫。
實用備份和恢復(fù) SQLite 數(shù)據(jù)庫命令。舉個例子,你可以編輯備份文件來修改字段的屬性和類型,然后再恢復(fù)這個數(shù)據(jù)庫。這比使用 SQL 命令來得容易。對于 3.x 數(shù)據(jù)庫可使用 sqlite3
。
# sqlite database.db .dump > dump.sql # 備份
# sqlite database.db < dump.sql # 恢復(fù)
sqlite database_v2.db .dump | sqlite3 database_v3.db
更多建議: