## PostgreSQL
### 更改 root 用戶或其它用戶的密碼
#?psql?-d?template1?-U?pgsql
>?alter?user?pgsql?with?password?'pgsql_password';??#?pgsql?為需要更改密碼的用戶名
### 創建用戶和數據庫
命令?`createuser`,?`dropuser`,?`createdb`?和?`dropdb`?等同于 SQL 命令的快捷方式。我們創建一個新用戶叫 bob 和一個數據庫叫 bobdb;使用數據庫的超級用戶 pgsql 來創建:
#?createuser?-U?pgsql?-P?bob?????????#?-P?會請求一個秘密
#?createdb?-U?pgsql?-O?bob?bobdb?????#?新數據庫?bobdn?的所有者是?bob
#?dropdb?bobdb???????????????????????#?刪除數據庫?bobdb
#?dropuser?bob???????????????????????#?刪除用戶?bob
一般數據庫認證機制配置在 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 用戶來完成備份與恢復。下面是備份和恢復單個數據庫:
#?pg_dump?--clean?dbname?>?dbname_sql.dump
#?psql?dbname?<?dbname_sql.dump
備份和恢復所有數據庫(包括用戶):
#?pg_dumpall?--clean?>?full.dump
#?psql?-f?full.dump?postgres
在這個例子中,你可以聲明任意現有的數據庫進行連接,但是如果你是向一個空的數據庫集群裝載,那么 postgres 應該是比較好的選擇。
## MySQL
### 更改 mysql root 用戶或其它用戶的密碼
#### 方法 1
#?/etc/init.d/mysql?stopor#?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';
mysql>?FLUSH?PRIVILEGES;???????????????????????????#?使用用戶名替代"root"
mysql>?quit
### 創建用戶和數據庫
#?mysql?-u?root?mysqlmysql>?CREATE?DATABASE?bobdb;
mysql>?GRANT?ALL?ON?*.*?TO?'bob'@'%'?IDENTIFIED?BY?'pwd';?
???????????????????????????#?使用?localhost?替代?%?來限制網絡訪問
mysql>?DROP?DATABASE?bobdb;????????????????????????#?刪除數據庫?bobdb
mysql>?DROP?USER?bob;??????????????????????????????#?刪除用戶?bob
mysql>?DELETE?FROM?mysql.user?WHERE?user='bob?and?host='hostname';?
???????????????????????????#?刪除?mysql?數據庫?user?表中?user=bob,host=hostname?的記錄
mysql>?FLUSH?PRIVILEGES;
### 允許遠程訪問
遠程訪問通常允許單個數據庫,而不是所有的數據庫。文件?`/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'?也可為?'%'?來完全訪問
### 備份和恢復
備份和恢復單個數據庫:
#?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
這里 mysql root 的密碼為 "secret",-p 選項后面沒有空格。當單獨使用 -p 選項(不跟密碼),命令行提示符后會要求輸入密碼。
## SQLite
[SQLite](http://www.sqlite.org/)?是一個小而強大的、獨立的(self-contained)、無服務器的(serverless)、零配置的(zero-configuration) SQL 數據庫。
### 備份和恢復
實用備份和恢復 SQLite 數據庫命令。舉個例子,你可以編輯備份文件來修改字段的屬性和類型,然后再恢復這個數據庫。這比使用 SQL 命令來得容易。對于 3.x 數據庫可使用?`sqlite3`。
#?sqlite?database.db?.dump?>?dump.sql??????????????#?備份
#?sqlite?database.db?<?dump.sql????????????????????#?恢復
### 轉換 2.x 到 3.x 數據庫
sqlite?database_v2.db?.dump?|?sqlite3?database_v3.db