UNIX數(shù)據(jù)庫(kù)

2018-11-24 15:27 更新

PostgreSQL

更改 root 用戶或其它用戶的密碼

# psql -d template1 -U pgsql
> alter user pgsql with password 'pgsql_password';  # pgsql 為需要更改密碼的用戶名

創(chuàng)建用戶和數(shù)據(jù)庫(kù)

命令 createuserdropusercreatedb 和 dropdb 等同于 SQL 命令的快捷方式。我們創(chuàng)建一個(gè)新用戶叫 bob 和一個(gè)數(shù)據(jù)庫(kù)叫 bobdb;使用數(shù)據(jù)庫(kù)的超級(jí)用戶 pgsql 來(lái)創(chuàng)建:

# createuser -U pgsql -P bob         # -P 會(huì)請(qǐng)求一個(gè)秘密
# createdb -U pgsql -O bob bobdb     # 新數(shù)據(jù)庫(kù) bobdn 的所有者是 bob
# dropdb bobdb                       # 刪除數(shù)據(jù)庫(kù) bobdb
# dropuser bob                       # 刪除用戶 bob

一般數(shù)據(jù)庫(kù)認(rèn)證機(jī)制配置在 pg_hba.conf 文件中。

允許遠(yuǎn)程訪問(wèn)

文件 $PGSQL_DATA_D/postgresql.conf 可指定綁定地址。對(duì)于 Postgres 8.x 通常為 listen_addresses = '*'。
文件 $PGSQL_DATA_D/pg_hba.conf 定義了訪問(wèn)控制。舉例:

# 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

備份和恢復(fù)

使用 pgsql 或 postgres 用戶來(lái)完成備份與恢復(fù)。下面是備份和恢復(fù)單個(gè)數(shù)據(jù)庫(kù):

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

備份和恢復(fù)所有數(shù)據(jù)庫(kù)(包括用戶):

# pg_dumpall --clean > full.dump
# psql -f full.dump postgres

在這個(gè)例子中,你可以聲明任意現(xiàn)有的數(shù)據(jù)庫(kù)進(jìn)行連接,但是如果你是向一個(gè)空的數(shù)據(jù)庫(kù)集群裝載,那么 postgres 應(yīng)該是比較好的選擇。

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

創(chuàng)建用戶和數(shù)據(jù)庫(kù)

# mysql -u root mysqlmysql> CREATE DATABASE bobdb;
mysql> GRANT ALL ON *.* TO 'bob'@'%' IDENTIFIED BY 'pwd'; 
                           # 使用 localhost 替代 % 來(lái)限制網(wǎng)絡(luò)訪問(wèn)
mysql> DROP DATABASE bobdb;                        # 刪除數(shù)據(jù)庫(kù) bobdb
mysql> DROP USER bob;                              # 刪除用戶 bob
mysql> DELETE FROM mysql.user WHERE user='bob and host='hostname'; 
                           # 刪除 mysql 數(shù)據(jù)庫(kù) user 表中 user=bob,host=hostname 的記錄
mysql> FLUSH PRIVILEGES;

允許遠(yuǎn)程訪問(wèn)

遠(yuǎn)程訪問(wèn)通常允許單個(gè)數(shù)據(jù)庫(kù),而不是所有的數(shù)據(jù)庫(kù)。文件 /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' 也可為 '%' 來(lái)完全訪問(wèn)

備份和恢復(fù)

備份和恢復(fù)單個(gè)數(shù)據(jù)庫(kù):

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

備份和恢復(fù)所有的數(shù)據(jù)庫(kù):

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

這里 mysql root 的密碼為 "secret",-p 選項(xiàng)后面沒(méi)有空格。當(dāng)單獨(dú)使用 -p 選項(xiàng)(不跟密碼),命令行提示符后會(huì)要求輸入密碼。

SQLite

SQLite 是一個(gè)小而強(qiáng)大的、獨(dú)立的(self-contained)、無(wú)服務(wù)器的(serverless)、零配置的(zero-configuration) SQL 數(shù)據(jù)庫(kù)。

備份和恢復(fù)

實(shí)用備份和恢復(fù) SQLite 數(shù)據(jù)庫(kù)命令。舉個(gè)例子,你可以編輯備份文件來(lái)修改字段的屬性和類(lèi)型,然后再恢復(fù)這個(gè)數(shù)據(jù)庫(kù)。這比使用 SQL 命令來(lái)得容易。對(duì)于 3.x 數(shù)據(jù)庫(kù)可使用 sqlite3。

# sqlite database.db .dump > dump.sql              # 備份
# sqlite database.db < dump.sql                    # 恢復(fù)

轉(zhuǎn)換 2.x 到 3.x 數(shù)據(jù)庫(kù)

sqlite database_v2.db .dump | sqlite3 database_v3.db
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)