Posts Tagged ‘mysql’
-
Wordpress数据库转移网址变换的方法
在将数据从旧的数据库转移到新的数据库的过程中,发现一点问题,那就是所有图片还是链接到过去的域名上,而且是绝对路径。这个怎么办呢?通过简单分析wordpress数据存储结构,得出如下结论:
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里面的内容可以被新的地址所调用了。转移网站成功!
-
Cool Stack 1.3
该文章转自朋友陶震的博客,转载过来学习。
源地址:http://maoa.cn/jerry/html/2008/07/200807291553467065.htmCool Stack 是一个在 Solaris 系统中 Apache, MySQL, PHP 等集合的简易安装包。
在 1.3 版本中升级了以下组件:
- Apache 2.2.9
- ruby 1.8.6p230
- mysql 5.1.25
- apc 3.0.19
项目地址:http://cooltools.sunsource.net/coolstack/
附:前一版本 Cool Stack 1.2 (Apache 2.2.6, MySQL 5.0.45, PHP 5.2.4) 使用说明
1. 下载 CoolStack 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_SMI2. 两个安装包解压缩后,# 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 enable csk-mysql32关闭 MySQL 服务:
# svcadm disable csk-mysql32查看 MySQL 服务状态:
# svcs –a | grep csk-mysql324. 启动 Apache
# svcadm enable csk-http
打开浏览器,地址栏输入:http://localhost,测试是否成功。
修改 Apache htdocs 网页发布文件夹权限
# cd /opt/coolstack/apache2
# chmod –R 777 htdocs5. 配置 PHP 参数
PHP 参数文件位于 /opt/coolstack/php5/lib/php.ini
-
MySQL 导入导出数据
导出:
mysqldump –u用户名 –p 数据库名 > 数据库导出文件
Example:
mysqldump –uroot –p abc > abc.data
(导出数据库abc到abc.sql文件)导入:
mysql –u用户名 –p 数据库名 < 数据库名.sql
Example:
mysql –uabc_f –p abc < abc.data
(导入数据库abc从abc.data文件) -
MySQL 修改表结构
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 literal | 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_optionsALTER 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语句中发出多个ADD、ALTER、DROP和CHANGE子句。这是MySQL对ANSI SQL92的一个扩充,SQL92在每个ALTER TABLE语句中只允许一个子句。
CHANGE col_name、DROP col_name和DROP INDEX是MySQL对 ANSI SQL92 的扩充。
MODIFY是 Oracle 对ALTER TABLE的扩充。
可选的词COLUMN是一个纯粹的噪音且可以省略。
如果你使用ALTER TABLE tbl_name RENAME AS new_name而没有任何其他选项,MySQL简单地重命名对应于表tbl_name的文件。没有必要创建临时表。
create_definition子句使用CREATE TABLE相同的ADD和CHANGE语法。注意语法包括列名字,不只列类型。见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;
如果你使用CHANGE或MODIFY缩短一个列,一个索引存在于该列的部分(例如,如果你有一个VARCHAR列的头10个字符的索引),你不能使列短于被索引的字符数目。
当你使用CHANGE或MODIFY改变一个列类型时,MySQL尽可能试图很好地变换数据到新类型。
在MySQL3.22或以后,你能使用FIRST或ADD … AFTER 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 KEY、CHECK和REFERENCES子句实际上不做任何事情,他们的句法仅仅提供兼容性,使得更容易地从其他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列时,自动地用顺序数字填入列值。
-
Solaris / OpenSolaris 下使用 MySQL 的问题汇总
Solaris下安装MySQL
1. 下载MySQL
下载页面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
选择对应的Solaris版本
2. 解包MySQL
转到下载目录
# gunzip –d mysql-standard-5.0.27-solaris10-x86_64.pkg.gz
3. 创建mysql的用户组和用户
# groupadd mysql
# useradd –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 stopMySQL修改密码方法首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员。方法一
使用phpmyadmin,这是最简单的了,修改mysql库的user表,
不过别忘了使用PASSWORD函数。方法二
使用mysqladmin,这是前面声明的一个特例。
mysqladmin –u root –p password mypasswd
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
把命令里的root改为你的用户名,你就可以改你自己的密码了。
当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
那么这种方法就是无效的。
而且mysqladmin无法把密码清空。
下面的方法都在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。方法六
使用GRANT … IDENTIFIED BY语句
mysql> GRANT USAGE ON *.* TO ‘paul’@”%” IDENTIFIED BY ‘mypassword’;
这里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 –p3.打开数据库:use dbname;
显示所有数据库:show databases;
显示数据库mysql中所有的表:先use mysql;然后show tables;
显示表的列信息:describe user;(显示表mysql数据库中user表的信息);4.创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ‘something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ‘something’ 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 bankaccount.*
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 customer (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.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql –u root –p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql
Paul’s Online Services
Dynamic Tag Cloud
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
Recent Posts
- AIX Storage Learning 1
- 春节快乐! Happy Spring Festival!
- Sun is to the end of life
- 为cos-html-cache插件增加页面(Page)、标签(Tag)和分类(Category)的静态化功能
- How to configure Subversion in OpenSolaris
- 转载:IIS FastCGI PHP 环境下搭建 WordPress
- 在OpenSolaris下动态绑定域名
- Goodbye 2009, Hello 2010
- This Is It
- A Morse Code Exchanger
Recent Comments
- 新视界 (New Vision) » 在OpenSolaris下动态绑定域名 on 使用ZFS打造家庭廉价数据中心
- paul on Wordpress数据库转移网址变换的方法
- 知识 on Wordpress数据库转移网址变换的方法
- WP Super Cache V0.98 and IIS7 « Anders Heie on Speed up your WordPress Blog on IIS 7 by using WP-Super-Cache
- 博沈 on This Is It
- paul on 使用ZFS打造家庭廉价数据中心
- Anonymous on OpenSolaris 上的 Samba 服务器
- Anonymous on 使用ZFS打造家庭廉价数据中心
- Anonymous on OpenSolaris 上的 Samba 服务器
- Paul on 十年前和十年后的我们