Posts Tagged ‘mysql’

  • Wordpress数据库转移网址变换的方法

    Date: 2009.03.19 | Category: WordPress | Response: 2

    在将数据从旧的数据库转移到新的数据库的过程中,发现一点问题,那就是所有图片还是链接到过去的域名上,而且是绝对路径。这个怎么办呢?通过简单分析wor­dp­ress数据存储结构,得出如下结论:

    1、存储日志文件的table是:prefix_posts。其中,prefix是在安装wordpress选择的数据库前缀名;

    2、在prefix_posts这个表中,有两个列与原先的域名有关,一个是:post_content,这个用来存储文本内容,也就是日志的html代码;另一列是guid,存储唯一识别码(跟网址绝对路径有关)。

    3、我们要执行在mysql数据库中替换字符串的过程。其sql语句如下:

    update TABLE set COLUMN=replace(COLUMN,‘STRING1’,‘STRING2’)
    其中,TABLE代表要操作的表格,COLUMN是要替换的列名,执行将STRING1替换成为STRING2

    对于本例我们应该如下做:

    update prefix_posts set prefix_content=replace(post_content,‘original_url_address’,‘present_url_address’)

    update prefix_posts set guid=replace(guid,‘original_url_address’,‘present_url_address’)

    这样,就会发现存储在/uploads里面的内容可以被新的地址所调用了。转移网站成功!

    • Share/Bookmark
  • Cool Stack 1.3

    Date: 2008.07.31 | Category: Database, Operating System, Programming Language, Sun | Response: 0

    该文章转自朋友陶震的博客,转载过来学习。
    源地址:http://maoa.cn/jerry/html/2008/07/200807291553467065.htm

    Cool Stack 是一个在 Sola­ris 系统中 Apa­che, MySQL, PHP 等集合的简易安装包。

    在 1.3 版本中升级了以下组件:

    • Apa­che 2.2.9
    • ruby 1.8.6p230
    • mysql 5.1.25
    • apc 3.0.19

    项目地址:http://cooltools.sunsource.net/coolstack/

    下载地址:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=CoolStack-1.3Fin-G-F@CDS-CDS_SMI

    附:前一版本 Cool Stack 1.2 (Apa­che 2.2.6, MySQL 5.0.45, PHP 5.2.4)  使用说明

    1. 下载 Coo­lStack 1.2 环境安装包:CSKruntime_1.2_x86.pkg.bz2 和 AMP 安装包:CSKamp_1.2_x86.pkg.bz2

    项目页面:http://cooltools.sunsource.net/coolstack/
    下载页面:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI– Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=cooltst-1.2-SP-G-F@CDS-CDS_SMI

    2. 两个安装包解压缩后,# su 切换到 root 权限,运行命令:

    # pkgadd –d CSKruntime_1.2_x86.pkg
    # pkgadd –d CSKamp_1.2_x86.pkg
    出现提示,选择y 或 all 或直接回车。

    3. 配置 MySQL

    修改数据目录权限
    # chown –R mysql:mysql /opt/coolstack/mysql_32bit/data

    初始化数据表
    # /opt/coolstack/mysql_32bit/bin/mysql_install_db

    启动 MySQL
    # /opt/coolstack/mysql_32bit/bin/mysqld_safe &

    登陆 MySQL 客户端
    # /opt/coolstack/mysql_32bit/bin/mysql –u root –p
    默认 root 密码为空

    修改 root 密码
    # /opt/coolstack/mysql_32bit/bin/mysqladmin –u root password ‘new-password’

    关闭 MySQL
    # /opt/coolstack/mysql_32bit/bin/mysqladmin shut –p
    输入新的 root 密码

    MySQL 配置成功后,使用如下命令启动和关闭 MySQL 服务。

    启动 MySQL 服务:
    # svcadm ena­ble csk-mysql32

    关闭 MySQL 服务:
    # svcadm disa­ble csk-mysql32

    查看 MySQL 服务状态:
    # svcs –a | grep csk-mysql32

    4. 启动 Apache

    # svcadm ena­ble csk-http

    打开浏览器,地址栏输入:http://localhost,测试是否成功。

    修改 Apa­che htdocs 网页发布文件夹权限
    # cd /opt/coolstack/apache2
    # chmod –R 777 htdocs

    5. 配置 PHP 参数

    PHP 参数文件位于 /opt/coolstack/php5/lib/php.ini

    • Share/Bookmark
  • MySQL 导入导出数据

    Date: 2008.07.24 | Category: Database, Sun | Response: 0

    导出:

    mysqldump –u用户名 –p 数据库名 > 数据库导出文件
    Exa­mple:
    mysqldump –uroot –p abc > abc.data
    (导出数据库abc到abc.sql文件)

    导入:
    mysql –u用户名 –p 数据库名 < 数据库名.sql
    Exa­mple:
    mysql –uabc_f –p abc < abc.data
    (导入数据库abc从abc.data文件)

    • Share/Bookmark
  • MySQL 修改表结构

    Date: 2008.07.24 | Category: Database, Sun | Response: 0

    ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec …]

    alter_specification:
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
    or    ADD INDEX [index_name] (index_col_name,…)
    or    ADD PRIMARY KEY (index_col_name,…)
    or    ADD UNIQUE [index_name] (index_col_name,…)
    or    ALTER [COLUMN] col_name {SET DEFAULT lite­ral | DROP DEFAULT}
    or    CHANGE [COLUMN] old_col_name create_definition
    or    MODIFY [COLUMN] create_definition
    or    DROP [COLUMN] col_name
    or    DROP PRIMARY KEY
    or    DROP INDEX index_name
    or    RENAME [AS] new_tbl_name
    or    table_options

    ALTER TABLE允许你修改一个现有表的结构。例如,你可以增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身。你也能改变表的注释和表的类型。

    如果你使用ALTER TABLE修改一个列说明但是DESCRIBE tbl_name显示你的列并没有被修改,这可能是MySQL因为在7.7.1 隐含的列说明改变中描述的原因之一而忽略了你的修改。例如,如果你试图将一个VARCHAR改为CHAR,MySQL将仍然使用VARCHAR,如果表包 含其他变长的列。

    ALTER TABLE通过制作原来表的一个临时副本来工作。修改在副本上施行,然后原来的表被删除并且重新命名一个新的。这样做使得所有的修改自动地转向到新表,没有任何失败的修改。当ALTER TABLE正在执行时,原来的桌可被其他客户读取。更新和写入表被延迟到新表准备好了为止。

    为了使用ALTER TABLE,你需要在表上的select、insert、delete、update、create和drop的权限。
    IGNORE是MySQL对ANSI SQL92 的一个扩充,如果在新表中的唯一键上有重复,它控制ALTER TABLE如何工作。如果IGNORE没被指定,副本被放弃并且恢复原状。如果IGNORE被指定,那么对唯一键有重复的行,只有使用第一行;其余被删除。
    你可以在单个ALTER TABLE语句中发出多个ADDALTERDROPCHANGE子句。这是MySQL对ANSI SQL92的一个扩充,SQL92在每个ALTER TABLE语句中只允许一个子句。
    CHANGE col_name、DROP col_name和DROP INDEX是MySQL对 ANSI SQL92 的扩充。
    MODIFY是 Ora­cle 对ALTER TABLE的扩充。
    可选的词COLUMN是一个纯粹的噪音且可以省略。
    如果你使用ALTER TABLE tbl_name RENAME AS new_name而没有任何其他选项,MySQL简单地重命名对应于表tbl_name的文件。没有必要创建临时表。
    create_definition子句使用CREATE TABLE相同的ADDCHANGE语法。注意语法包括列名字,不只列类型。见7.7 CREATE TABLE句法。
    你可以使用CHANGE old_col_name create_definition子句重命名一个列。为了这样做,指定旧的和新的列名字和列当前有的类型。例如,重命名一个INTEGER列,从a到b,你可以这样做:
    mysql> ALTER TABLE t1 CHANGE a b INTEGER;

    如果你想要改变列的类型而非名字,就算他们是一样的,CHANGE语法仍然需要2个列名。例如:

    mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

    然而,在MySQL3.22.16a,你也可以使用MODIFY来改变列的类型而不是重命名它:

    mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

    如果你使用CHANGEMODIFY缩短一个列,一个索引存在于该列的部分(例如,如果你有一个VARCHAR列的头10个字符的索引),你不能使列短于被索引的字符数目。
    当你使用CHANGEMODIFY改变一个列类型时,MySQL尽可能试图很好地变换数据到新类型。
    在MySQL3.22或以后,你能使用FIRSTADDAFTER col_name在一个表的行内在一个特定的位置增加列。缺省是增加到最后一列。
    ALTER COLUMN为列指定新的缺省值或删除老的缺省值。如果老的缺省值被删除且列可以是NULL,新缺省值是NULL。如果列不能是NULL,MySQL赋予一个缺省值。缺省值赋值在7.7 CREATE TABLE句法中描述。
    DROP INDEX删除一个索引。这是MySQL对 ANSI SQL92 的一个扩充。
    如果列从一张表中被丢弃,列也从他们是组成部分的任何索引中被删除。如果组成一个索引的所有列被丢弃,该索引也被丢弃。
    DROP PRIMARY KEY丢弃主索引。如果这样的索引不存在,它丢弃表中第一个UNIQUE索引。(如果没有明确地指定PRIMARY KEY,MySQL标记第一个UNIQUE键为PRIMARY KEY。)
    用 C API 函数mysql_info(),你能找出多少记录被拷贝, 和(当使用IGNORE时)由于唯一键值的重复多少记录被删除。
    FOREIGN KEYCHECKREFERENCES子句实际上不做任何事情,他们的句法仅仅提供兼容性,使得更容易地从其他SQL服务器移植代码并且运行借助引用来创建表的应用程序。见5.4 MySQL缺少的功能。
    这里是一个例子,显示了一些ALTER TABLE用法。我们以一个如下创建的表t1开始:

    mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));

    重命名表,从t1到t2:

    mysql> ALTER TABLE t1 RENAME t2;

    为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c:

    mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

    增加一个新TIMESTAMP列,名为d:

    mysql> ALTER TABLE t2 ADD d TIMESTAMP;

    在列d上增加一个索引,并且使列a为主键:

    mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

    删出列c:

    mysql> ALTER TABLE t2 DROP COLUMN c;

    增加一个新的AUTO_INCREMENT整数列,命名为c:

    mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX ©;

    注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,并且另外我们声明c为NOT NULL,因为索引了的列不能是NULL

    当你增加一个AUTO_INCREMENT列时,自动地用顺序数字填入列值。

    • Share/Bookmark
  • Solaris / OpenSolaris 下使用 MySQL 的问题汇总

    Date: 2008.05.29 | Category: Sun | Response: 1

    Solaris下安装MySQL

    1. 下载MySQL
    下载页面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
    选择对应的Sola­ris版本
    2. 解包MySQL
    转到下载目录
    # gun­zip –d mysql-standard-5.0.27-solaris10-x86_64.pkg.gz
    3. 创建mysql的用户组和用户
    # grou­padd mysql
    # use­radd –G mysql mysql
    4. 使用pkgadd安装MySQL包
    # pkgadd –d mysql-standard-5.0.27-solaris10-x86_64.pkg
    安装后的MySQL位于/opt/mysql/mysql目录下
    5. 在目录/etc下创建文件my.cnf文件,内容如下
    [mysqld]
    basedir=/opt/mysql/mysql
    datadir=/opt/mysql/mysql/data
    6. 运行MySQL的post-install文件,创建数据库repository
    # cd /opt/mysql/mysql
    # ./scripts/mysql_install_db –defaults-file=/etc/my.cnf –user=mysql
    7. 启动MySQL
    # cd /opt/mysql/mysql
    # ./bin/mysqld_safe –defaults-file=/etc/my.cnf –user=mysql
    也可以使用如下的方法来启动MySQL
    # /etc/init.d/mysql start
    8. 更改MySQL root用户的口令
    # /opt/mysql/mysql/bin/mysqladmin –u root password ‘new-password’
    # /opt/mysql/mysql/bin/mysqladmin –u root –h 机器名称 password ‘new-password’

    9. 登录MySQL命令行
    # mysql –p
    输入新的密码
    9. 停止MySQL
    # /etc/init.d/mysql stop

    MySQL修改密码方法
    首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员。
    方法一
    使用phpmyadmin,这是最简单的了,修改mysql库的user表,
    不过别忘了使用PASSWORD函数。
    方法二
    使用mysqla­dmin,这是前面声明的一个特例。
    mysqla­dmin –u root –p password mypa­sswd
    输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
    把命令里的root改为你的用户名,你就可以改你自己的密码了。
    当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
    那么这种方法就是无效的。
    而且mysqla­dmin无法把密码清空。
    下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
    方法三
    mysql> INSERT INTO mysql.user (Host,User,Password)
    VALUES(‘%’,‘paul’,PASSWORD(‘mypassword’));
    mysql> FLUSH PRIVILEGES
    确切地说这是在增加一个用户,用户名为paul,密码为mypassword。
    注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES
    方法四
    和方法三一样,只是使用了REPLACE语句
    mysql> REPLACE INTO mysql.user (Host,User,Password)
    VALUES(‘%’,‘paul’,PASSWORD(‘mypassword’));
    mysql> FLUSH PRIVILEGES
    方法五
    使用SET PASSWORD语句,
    mysql> SET PASSWORD FOR ‘paul’@”%” = PASSWORD(‘mypassword’);
    你也必须使用PASSWORD()函数,
    但是不需要使用FLUSH PRIVILEGES
    方法六
    使用GRANTIDENTIFIED BY语句
    mysql> GRANT USAGE ON *.* TO ‘paul’@”%” IDENTIFIED BY ‘mypa­ssword’;
    这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES
    注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。

    mysql技巧总结

    1.修改mysql中root的密码:
    shell>mysql –u root –p
    mysql>SET PASSWORD FOR root=PASSWORD(“root”);

    2.远程登录mysql server:(当然server必须首先给某个远程用户授权了)
    shell>mysql –h host –u user –p

    3.打开数据库:use dbname;
    显示所有数据库:show data­ba­ses;
    显示数据库mysql中所有的表:先use mysql;然后show tables;
    显示表的列信息:desc­ribe user;(显示表mysql数据库中user表的信息);

    4.创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
    GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ‘some­thing’ WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ‘some­thing’ WITH GRANT OPTION;

    5.删除授权:
    REVOKE ALL PRIVILEGES ON *.* FROM root@”%”;
    USE mysql;
    DELETE FROM user WHERE User=“root” and Host=”%”;
    FLUSH PRIVILEGES;

    6. 创建一个用户custom在特定客户端weiqiong.com登录,可访问特定数据库bankaccount
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON ban­ka­ccount.*
    TO custom@weiqiong.com IDENTIFIED BY ‘stupid’;

    7.重命名表:
    ALTER TABLE t1 RENAME t2;

    为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),
    并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c:
    ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

    增加一个新TIMESTAMP列,名为d:
    ALTER TABLE t2 ADD d TIMESTAMP;

    在列d上增加一个索引,并且使列a为主键:
    ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

    删除列c:
    ALTER TABLE t2 DROP COLUMN c;

    增加一个新的AUTO_INCREMENT整数列,命名为c:
    ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX ©;
    注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,并且另外我们声明c为NOT NULL
    因为索引了的列不能是NULL

    8.删除记录:
    DELETE FROM t1 WHERE C>10;

    6.改变某几行:
    UPDATE t1 SET user=weiqiong,password=weiqiong;

    7.使用name列的头10个字符创建一个索引:
    CREATE INDEX part_of_name ON custo­mer (name(10));

    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.导入数据库

    常用sou­rce 命令

    进入mysql数据库控制台,

    如mysql –u root –p

    mysql>use 数据库

    然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

    mysql>source d:wcnc_db.sql

    • Share/Bookmark

Paul’s Online Services

Dynamic Tag Cloud

Recent Posts

Recent Comments

Tags

2008.11.Trip-of-GuangXi ASP.net C++ China Chrome css dotNet FCGuoAn Firefox Football gmail IBM IE IIS IT Association Joke Microsoft music mysql NLP Nokia ntfs NumPy OpenSolaris open source Open Team php pidgin PKUSS Python Python Challenge qq Samba SciPy Learning shell solaris SQL SUN Thunderbird Travel web host Win 7 WordPress X11 zfs