十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、关闭数据库服务
创新互联建站专注于网站建设|成都网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都餐厅设计等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身定制品质网站。
2、进入数据库的工作空间目录 (如果是建库是没有另外指定,应该就是postgresql安装目录下的 data 目录)
3、编辑修改文件 pg_hba.conf, 把连接权限设置的 md5 加密方式 改成 trust以我的为例,原本设置是
1
2
3
4
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
修改为
1
2
3
4
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
4、从新启动postgresql数据库服务
5、可以不用密码就能用postgres用户登陆,然后执行修改用户密码的操作
6、修改 pg_hba.conf 文件,改回到 md5 方式,再重启数据库服务就ok了
7、再执行建用户,和建库操作
createuser.exe -s -P foo -U postgres
createdb.exe --encoding=UTF8 --owner=foo --template=template_postgis -Ufoo
参数:
--encoding=UTF8 设置数据库的字符集
--owner=foo 设置数据库的所有者
--tmplate=template_postgis 设置建库的模板,该模板支持空间数据操作
--Ufoo 用foo用户身份建立数据库
方法一:
一般 PostgreSQL 建库都是用的 UTF8 字符集, 在 UTF8 字符集情况下如果中文不能
正常显示,可以设置客户端字符集,修改成 " GBK " ,命令如下:
--修改客户端字符集
postgres=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
postgres=# set client_encoding='GBK';
SET
--copy 导出数据到 GBK 编码类型的 csv 文件
skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header;
COPY 1000000
备注:此时通过 sftp 将 csv 文件传到 windows 本机,就不会出现乱码了。
方法二: 使用 iconv 工具更改文件编码
iconv 是 linux 命令,用来转换文件的编码的 ,手册解释如下 "Convert encoding of
given files from one encoding to another",我们可以使用 iconv 命令转换文件的编码,如果 utf8
编码的文件中文显示为乱码,可以使用 iconv 命令将 UTF8 格式文件转换成 gb18030,参考步骤:
--导出数据到 utf8 编码类型文件。
skytf=# set client_encoding='UTF8';
SET
skytf=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header;
COPY 1000000
--将文件编码由 utf8 转换成 gb18030
iconv -f utf-8 -t gb18030 skytf.test_2.csv -o skytf.test_2_gbk.csv
1、关闭数据库服务
2、进入数据库的工作空间目录 (如果是建库是没有另外指定,应该就是postgresql安装目录下的 data 目录)
3、编辑修改文件 pg_hba.conf, 把连接权限设置的 md5 加密方式 改成 trust以我的为例,原本设置是
1
2
3
4
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
修改为
1
2
3
4
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
4、从新启动postgresql数据库服务
5、可以不用密码就能用postgres用户登陆,然后执行修改用户密码的操作
6、修改 pg_hba.conf 文件,改回到 md5 方式,再重启数据库服务就ok了
7、再执行建用户,和建库操作
createuser.exe -s -P foo -U postgres
createdb.exe --encoding=UTF8 --owner=foo --template=template_postgis -Ufoo
参数:
--encoding=UTF8 设置数据库的字符集
--owner=foo 设置数据库的所有者
--tmplate=template_postgis 设置建库的模板,该模板支持空间数据操作
--Ufoo 用foo用户身份建立数据库
我用ubuntu,所以不大懂yum具体怎么操作,但我想应该与apt的功能差不多。首先,postgresql是很有名的数据库,你用不着指定具体的版本。你可以直接用yum去查询源或者库里是否有这个软件(具体操作请参考yum的文档,我这边是apt-cachesearchpostgresql)当然,如果你用新立得的话,它的编辑菜单里有个按任务安装软件,里面有postgresql数据库的选项。安装postgresql之后难免要配置它。你也许会很奇怪,安装的过程中没有提示你添加用户或者添加数据库密码(在ubuntu上就是这样,不知道红帽是什么样的情况)。其实,随着数据库的安装,已经添加了用户postgres,你要做的是先登录到这个用户的shell下,再添加你需要的实用用户。按照我的操作,是这样的,先passwdpostgres改掉本地用户postgres的密码然后用这个postgres登录到系统(可以Ctrl+Alt+F1-F5来切换虚拟控制台)。createuser本地帐户##如果你本地用户名是joe,那么就createuserjoe会提示你是否创建超级用户。一般来说都会建一个超级用户来管理,当然你也可以选择建立一个普通的用户。现在基本上就配置完毕了,回到你刚才的用户登录,例如joe,可以用psql来登录到postgresql了。如果你需要编程登录数据库,那么你得先建库,再建role,然后通过role登录。打个比方,用php登录到postgresql,使用PEAR的MDB2软件包登录,你可以这样createdb##假设你为当前用户(本地帐户)建立了一个超级数据库用户(角色,role),该命令会建立一个与当前用户同名的数据库,可以指定数据库名来建别的库。psql##以超级用户登录到数据库(与本地用户同名)alterrole本地用户名password'newpassword';##为本地数据库用户(角色)建立一个密码,这个密码将来用于你编程登录数据库现在可以用本地用户作为角色通过php编程登录数据库了,因为密码和用户名都是已知的了。当然,用超级用户登录数据库有安全问题,如果你建立一个普通角色的话,需要给普通用户赋权,这个问题需要你参考postgresql的用户手册,百度文库里有英文9.1的用户手册,查询权限一节即可解决此问题。或者,可以使用pgadmin这一图形界面来解决权限等问题。
PostgreSQL的现有版本在不增加可供购买的商业应用包时,并不降低其使用价值,反而由于它的plpgsql包和C及ODBC接口的存在,使数据库系统在二次开发的过程中,可最大程度地保护已经投入的程序资产。 宿主平台在Linux和类UNIX平台上,PostgreSQL8.2.4 比较适合 RedHat 的 AdvanceServer4和 Kylin2.1,这两个平台对于这一版本的PostgreSQL有最为接近的升级兼容性,两者的表示层都是BSD血统,使用的C库都在一个版本层中,系统的主要部分都很成熟,移植的问题基本上不存在。 对于Windows平台,目前典型的是2K和2K3,以及XP。在2K平台上兼容性极好,运行稳定,并且在数据库内部的操作与其它平台上的版本完全一致,这给数据库应用在不同平台之间的移植打下了良好的基础。 Windows平台安装实践所选择的平台是Windows2K。安装过程和一般应用程序的安装差不多,根据自己的需要指定安装选项,没有过多的要求。安装完毕并启动后,做以下几件事: (1)写一个文本文件,并命名为“pgpass.conf”,内容为: localhost:5432:postgres:postgres:qazwsxedc 其中“localhost”表示使用了UNIX域的Socket方式,这是为安全而考虑的。 第二个字段是端口,第三个字段是数据库名,第四个字段是帐户名,第五个 字段是口令。可以有多行,每行代表一个数据库帐户。 (2)上述文件放到以下路径: C:\Documents and Settings\postgresql\Application Data\postgresql 如果是不同的帐户,例如我使用的帐户是“campus”,那么路径为: C:\Documents and Settings\campus\Application Data\postgresql (3)打开ODBC数据源 -- 控制面板 -- 管理工具 -- ODBC数据源,在选项卡“用户DSN”中选择“添加”并打开,在列表中选择“PostgreSQL Unicode”并按“完成”。如果需要,也可以在选项卡“系统DSN”中按同一步骤添加。 (4)在列表中选择“PosgreSQL30W”,打开“配置”窗口,依次填入必要的信 息。在我的例子中,Database是“center”,Server是“Localhost”, Port是5432,UserName和Password根据自己的情况填写。 (5)按“Test”按钮,对话窗出现,显示“Connect successful”,然后按“Save”保存并退出。 (6)在VB、VC或是ASP中,按通常的方法选择数据源,这就完成了PostgreSQL在Windows系统上的全部安装过程。 我的应用数据库安装方法采用以文本文件的形式加上批处理过程来进行。关于建库的一段语句如下: select 'Create table space ...' ; CREATE TABLESPACE campus_center -- 创建表空间 OWNER campus LOCATION 'E:/cps/campus_center' ; select 'Create database Center ... ...' ; create database center -- 创建数据库 with template = template0 owner = campus tablespace = campus_center encoding = 'euc_cn' ; select 'Create Procedural Language PL/pgSQL ...' ; CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' -- 注册使用的解释器 HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator其中,在建库时一定要指定参数“encoding = 'euc_cn'”,否则在Windows平台上会出现乱码。 批处理文件的内容大致如下: @echo off mem initdb.bat mkdir E:\cps\campus_center "D:\Program Files\PostgreSQL\8.2\bin\psql.exe" -h localhost -p 5432 postgres "postgres" -f .\00_wincenter_make.sql .\initwin.log 2 .\initwin2.log ... ...命令“mkdir”建立一个操作系统目录,作为将要建立的应用所使用的表空间。注意第二条命令“psql.exe”使用了全路径,后面的语句都是在一行上,不可中断。命令使用文件“00_wincenter_make.sql”来创建数据库,产生的标准输出和标准错误分别向文件“initwin.log”和“initwin2.log”中写入,可用于建库过程中的诊断。后续语句可仿此办理,但输出换向符应由“”改为“”,以追加信息到诊断日志尾部。 通常在诊断日志文件“initwin2.log”中找不到字符串“ERROR”时,可以认为应用数据库已经成功安装并运行了。 注意事项:如果在VB下使用PostgreSQL8.2.4,那么VB的版本要低于VS2005,否则接口不兼容。这也是所谓“.net”战略的排他性。