MySQL添加用户与授权

一、创建用户

命令: CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;

说明:username – 你将创建的用户名, host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password – 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例子:

Continue reading “MySQL添加用户与授权”

HIVE中join、semi join、outer join举例详解

举例子:

Continue reading “HIVE中join、semi join、outer join举例详解”

POSTGRESQL 无法创建数据库 出现类似createdb: could not connect to database postgres: FATAL: role “XXXX” does not exist

I figured I’d share getting setup on my Ubuntu machine.

Installing

Creating User

Continue reading “POSTGRESQL 无法创建数据库 出现类似createdb: could not connect to database postgres: FATAL: role “XXXX” does not exist”

SQLite资料

Sqlite是一种嵌入式/内存轻型数据库,它跨平台,快速,小巧,高效。如果你想选择小型数据库,我相信sqlite将是最佳的选择。它要比access数据库强大很多很多。当然如果你想说MSSQL或者MySQL要比SQLite高效的多。这一点我解释如下:

首先:sqlite定位是小型数据库(轻型),处理大数据自然有局限性。定位标准不同。

其次:sqlite在处理小型数据并不逊色于大型数据库,而且他体积更小。

由于这方面的资料比较多,我以链接的形式来介绍。

 

入门:

什么是SQLitehttp://baike.baidu.com/view/19310.htm

Sqlite官网:http://www.sqlite.org/

Sqlite中文社区:http://www.sqlite.com.cn/

最希望大家去的sqlite官网,里面写的很详细,虽然是英文。

 

Sqlite局限:

Sqlite局限性:http://apps.hi.baidu.com/share/detail/17043674

Sqlite不支持的操作:http://apps.hi.baidu.com/share/detail/17095537

 

Sqlite封装:

CppSqlitehttp://www.codeproject.com/KB/database/CppSQLite.aspx 

该类是最方便的类之一,可惜不支持加密和中文路径,后来有人做了改进

支持中文路径:http://hi.baidu.com/wangguang246/blog/item/4a521f96f5b2006355fb96bf.html

 

关于加密:

wxSqlite3http://wxcode.sourceforge.net/components/wxsqlite3/ 

这个库更新的很快,完全和sqlite3的发布同步,同时支持强大的加密功能,但是这个类使用关于麻烦,后来有人仅仅获取里面的加密功能和CppSqlite结合使用。

加密的另一种方案:http://news.2ky.cn/149/4101.htm 

 

如何编加密版本的sqlite

如何使用VC6编译sqlite3源码生成动态链接库

http://blog.csdn.net/littletigerat/archive/2010/04/19/5502491.aspx

如何对sqlite3数据库进行加密

http://blog.csdn.net/littletigerat/archive/2010/04/20/5502690.aspx

如果编译加密版本的sqlite请认真看上面两篇博客,我亲自测试,但是有些错误,后来做了一些说明:

上面的教程中有许些错误(测试版本3.73

1vc6编译sqlite源码的时候操作的时候,会提示提示出现找不到:“sqlite3rtree.h”头文件

解决方法:这个地方改成rtree.h

2:编译加密时候复制 到pagec的时候,同时要把复制的文件中的#include sqlite3.c”去掉

3:引用的时候要把sqlite3.h中的#ifdef SQLITE_HAS_CODEC以及对应的#endif去掉

 

 

Sqlite数据库查看工具

1:官网自带的工具,黑色的doc,不好用~

2Navicat for SQLite

http://www.sz1001.net/soft/43670.htm 

MySQL的mysqldump工具的基本用法

导出要用到MySQL的mysqldump工具,基本用法是:   

shell> mysqldump [OPTIONS] database [tables]  

如果你不给定任何表,整个数据库将被导出。   

通过执行mysqldump –help,你能得到你mysqldump的版本支持的选项表。  

注意,如果你运行mysqldump没有–quick或–opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。  

mysqldump支持下列选项:   

–add-locks   
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。   
–add-drop-table   
在每个create语句之前增加一个drop table。   
–allow-keywords   
允许创建是关键词的列名字。这由表名前缀于每个列名做到。   
-c, –complete-insert   
使用完整的insert语句(用列名字)。   
-C, –compress   
如果客户和服务器均支持压缩,压缩两者间所有的信息。   
–delayed   
用INSERT DELAYED命令插入行。   
-e, –extended-insert   
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)   
-#, –debug[=option_string]   
跟踪程序的使用(为了调试)。   

–help  

显示一条帮助消息并且退出。   
–fields-terminated-by=…   
   
–fields-enclosed-by=…   
   
–fields-optionally-enclosed-by=…   
   
–fields-escaped-by=…   
   
–fields-terminated-by=…   


这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。   
LOAD DATA INFILE语法。   
-F, –flush-logs   
在开始导出前,洗掉在MySQL服务器中的日志文件。   
-f, –force,   
即使我们在一个表导出期间得到一个SQL错误,继续。   
-h, –host=..   
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。   
-l, –lock-tables.   
为开始导出锁定所有表。   
-t, –no-create-info   
不写入表创建信息(CREATE TABLE语句)   
-d, –no-data   
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!   
–opt   
同–quick –add-drop-table –add-locks –extended-insert –lock-tables。   
应该给你为读入一个MySQL服务器的尽可能最快的导出。   
-pyour_pass, –password[=your_pass]   
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。   
-P port_num, –port=port_num   
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)   
-q, –quick   
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。   
-S /path/to/socket, –socket=/path/to/socket   
与localhost连接时(它是缺省主机)使用的套接字文件。   
-T, –tab=path-to-some-directory   
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和–lines–xxx选项来定。   
-u user_name, –user=user_name   
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。   
-O var=option, –set-variable var=option设置一个变量的值。可能的变量被列在下面。   
-v, –verbose   
冗长模式。打印出程序所做的更多的信息。   
-V, –version   
打印版本信息并且退出。   
-w, –where=\’where-condition\’   
只导出被选择了的记录;注意引号是强制的!   
“–where=user=\’jimf\'” “-wuserid>1” “-wuserid<1” 

最常见的mysqldump使用可能制作整个数据库的一个备份:  
mysqldump –opt database > backup-file.sql   
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:   
mysqldump –opt database | mysql –host=remote-host -C database   
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:   
shell> mysqladmin create target_db_name   
shell> mysql target_db_name < backup-file.sql  
就是  
shell> mysql 库名 < 文件名 

================================

几个常用用例:

1.导出整个数据库
 mysqldump -u 用户名 -p 数据库名 > 导出的文件名    
 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
  mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
 -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table 
4.导入数据库
  常用source 命令
  进入mysql数据库控制台,
  如mysql -u root -p 
  
  mysql>use 数据库
  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source d:\wcnc_db.sql

MongoDB 核心将支持全文搜索功能 (2.3.2)

来自 MongoDB 官方 JIRA 的一个新特性报告称 MongoDB 将在 2.3.2 版本中增加全文搜索功能。该功能还是体验到阶段,使用方法包括:

db.adminCommand( { setParameter : "*", textSearchEnabled : true } );

或者是:

./mongod --setParameter textSearchEnabled=true

特性:

  • parsing + stemming for latin languages
  • multi-word scoring
  • phrase matching
  • word negation
  • weights per field
  • additional suffix index fields for coverings
  • additional prefix index fields for partitioning
  • specify language per document

简单使用示例:

> db.foo.insert( { _id: 1 , desc: "the dog is running" } )
> db.foo.insert( { _id: 2 , desc: "the cat is walking" } )
> db.foo.ensureIndex( { "desc": "text" } )
> db.foo.runCommand( "text", { search : "walk" } )
{
    "queryDebugString" : "walk||||||",
    "language" : "english",
    "results" : [
        {
            "score" : 0.75,
            "obj" : {
                "_id" : 2,
                "desc" : "the cat is walking"
            }
        }
    ],
    "stats" : {
        "nscanned" : 1,
        "nscannedObjects" : 0,
        "n" : 1,
        "timeMicros" : 330
    },
    "ok" : 1
}

MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里

数据库中继器 SQL Relay

SQL Relay 是一个持久化的数据库连接池,用来为 Unix 或者 Linux 提供数据库连接池、代理以及负载均衡的功能。

SQL Relay 的应用思路:

  • 加速数据库驱动的基于 Web 的应用程序
  • 增加 Web 应用程序的可扩展性
  • 分布式的访问复制的数据库系统
  • 对数据库访问进行节流
  • 从不被支持的平台上访问某个数据库
  • 可以轻松的对数据库系统进行移植

目前 SQL Reply 支持的数据库包括:

  • Oracle
  • MySQL
  • mSQL
  • PostgreSQL
  • Sybase
  • MS SQL Server
  • IBM DB2
  • Interbase
  • Sybase
  • SQLite
  • ODBC
  • MS Access

其中 MySQL 和 PostgreSQL 数据库是 SQL Reply 内置支持的。

SQL Reply 提供基于命令行的客户端工具以及一个图形化的配置程序和相应的文档。

Ubuntu12.04下关闭MongoDB的开机启动

网上什么用sysv-rc-conf配置,什么改S开头为K开头什么的方法通通的不管用,因为10.04开始把MongoDB的启动连接到了/lib/init/upstart-job,而后者是调用了/etc/init/mongodb.conf文件里面关于开机的定义,这是新的框架,所以以前的方法通 通不管用了,你用sysv-rc-conf的时候甚至发现mongodb根本禁止在任何runrevel上启动的,而实际情况是,它每次都很淡定地自动启动了。

 
查看/etc/init/mongodb.conf内容
  1. # Ubuntu upstart file at /etc/init/mongodb.conf  
  2.   
  3. limit nofile 20000 20000  
  4.   
  5. kill timeout 300 # wait 300s between SIGTERM and SIGKILL.  
  6.   
  7. pre-start script  
  8.     mkdir -p /var/lib/mongodb/  
  9.     mkdir -p /var/log/mongodb/  
  10. end script  
  11.   
  12. start on runlevel [2345]  
  13. stop on runlevel [06]  
  14.   
  15. #script  
  16.   ENABLE_MONGODB=“yes”  
  17.   if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi  
  18.   if [ “x$ENABLE_MONGODB” = “xyes” ]; then exec start-stop-daemon –start –quiet –chuid mongodb –exec  /usr/bin/mongod — –config /etc/mongodb.conf; fi  
  19. #end script 

 

修改为
 
  1. # Ubuntu upstart file at /etc/init/mongodb.conf  
  2.   
  3. #limit nofile 20000 20000  
  4.   
  5. #kill timeout 300 # wait 300s between SIGTERM and SIGKILL.  
  6.   
  7. #pre-start script  
  8. #    mkdir -p /var/lib/mongodb/  
  9. #    mkdir -p /var/log/mongodb/  
  10. #end script  
  11.   
  12. #start on runlevel [2345]  
  13. #stop on runlevel [06]  
  14.   
  15. #script  
  16. #  ENABLE_MONGODB=”yes”  
  17. #  if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi  
  18. #  if [ “x$ENABLE_MONGODB” = “xyes” ]; then exec start-stop-daemon –start –quiet –chuid mongodb –exec  /usr/bin/mongod — –config /etc/mongodb.conf; fi  
  19. #end script 

 

ubuntu上最新版本mongodb的安装

ubuntu上安装mongodb本可以直接通过sudo apt-get install mongodb 进行安装,只是ubuntu的源上版本比实际mongodb的版本低很多,所以有必要从mongodb的10gen获取最新版本进行安装,安装过程主要需 要将10gen的路径添加到apt-get source list中及key的获取。安装步骤如下:

1、 编辑/etc/apt/sources.list,添加如下内容:

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

2、生成GPG key.运行如下命令:

1
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

3、运行apt-get update,更新源,然后即可安装最新版本的mongodb.

1
2
sudo apt-get update
sudo apt-get install mongodb-10gen

4、安装完毕后,输入mongo即可查看是否服务正常启动了。

load data infile 导入数据 InnoDB 外键约束

用户表:user
主键:id

内容表:post
主键:id
外键:user_id(关联到 user 表的主键 id)

post 表的数据文件存在文本文件中,字段之间用 tab 分隔,当要把文件导入到 post 表时,因 user 和 post 都是 InnoDB 引擎的,有外键约束,运行导入语句:

load data infile '/home/leakon/post.sql' ignore into table post ignore 1 lines ( user_id, title, unixtime );

MySQL 报错,信息如下:

Cannot add or update a child row: a foreign key constraint fails (leakon/post, CONSTRAINT post_FK_1 FOREIGN KEY (user_id) REFERENCES user (id))

反复尝试,总是失败,后来查了一下解决办法,只要在装载数据之前,插入下述语句,即可暂时关闭外键约束检查:

SET FOREIGN_KEY_CHECKS = 0;

然后再次运行 load data infile 语句,即可立即导入数据。