0°

Linux常用工具命令之数据库

18.1 PostgreSQL

更改root用户或其它用户的密码


$ psql -d template1 -U pgsql
> alter user pgsql with password 'pgsql_password';	//pgsql为需要更改密码的用户名

创建用户和数据库
命令createuser,dropuser,createdb和dropdb等同于SQL命令42的快捷方式.我们创建一个新用户叫bob和一个数据库叫bobdb;使用数据库的超级用户pgsql来创建:


$ createuser -U pgsql -P bob	//-P会请求一个秘密
$ createdb -U pgsql -O bob bobdb	//新数据库bobdn的所有者是bob43
$ 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应该是比较好的选择.

18.2 MySQL

更改mysql root用户或其它用户的密码
方法1


$ /etc/init.d/mysql stop
or
$ 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 mysql
mysql> 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 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;	//使用'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选项(不跟密码),命令行提示符后会要求输入密码.

18.3 SQLite

SQLite44是一个小而强大的、独立的(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
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论