标签存档: mysql

[转]shell操作mysql

来源:http://blog.csdn.net/hbcui1984/article/details/5125387

在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。

  • 方案1

mysql -uuser -ppasswd -e”insert LogTable values(…)”

优点:语句简单
缺点:支持的sql相对简单

  • 方案2

准备一个sql脚本,名字为update.sql,例如:

CREATE TABLE `user` (
`id` varchar(36) NOT NULL COMMENT ‘主键’,
`username` varchar(50) NOT NULL COMMENT ‘用户名’,
`password` varchar(50) NOT NULL COMMENT ‘用户密码’,
`createdate` date NOT NULL COMMENT ‘创建时间’,
`age` int(11) NOT NULL COMMENT ‘年龄’,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=’用户信息表’;
DROP TABLE IF EXISTS `visit_log`;
CREATE TABLE `visit_log` (
`id` varchar(36) character set utf8 NOT NULL,
`type` int(11) NOT NULL,
`content` text character set utf8 NOT NULL,
`createdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’访问日志’;

新建一个update_mysql.sh,内容如下:

use chbdb;
source update.sql

然后执行如下命令:

cat update_mysql.sh | mysql –user=root -ppassword

优点:支持复杂的sql脚本
缺点:
1> 需要两个文件:update.sql和update_mysql.sh
2> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: ‘update.sql’: Table ‘user’ already exists
然后脚本退出,第二张表也就无法创建。

  • 方案3

新建一个shell脚本,格式如下:

#!/bin/bash
mysql -u* -h* -p* <<EOF
Your SQL script.
EOF

例如:

#!/bin/bash
mysql -uroot -ppassword <支持复杂的sql脚本
2>无需其它额外文件
缺点:
1> 表名、字段不能使用单引号,需要修改原有sql语句
2> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: ‘update.sql’: Table ‘user’ already exists
然后脚本退出,第二张表也就无法创建。

  • 方案4

准备一个sql脚本,如update.sql,然后执行如下命令:

mysql -uroot -ppassword < update.sql

优点:支持复杂的sql脚本 缺点:

1> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: ‘update.sql’: Table ‘user’ already exists
然后脚本退出,第二张表也就无法创建。

删除mysql日志文件

mysql长时间运行的话,会产生大量日志,而这些日志文件没什么大的用处,可以删除它节约空间。

下面以gentoo为例,说明如何删除mysql日志文件,并且设置不产生日志。

1、删除日志:

日志文件位置:/var/lib/mysql/,里面有大量的类似mysqld-bin.000001的文件,删除:

rm /var/lib/mysql/mysqld-bin.*

2、配置mysql,不让它产生日志:

vi /etc/mysql/my.cnf

将有log-bin的代码注释掉;

3、重启mysql服务:

/etc/init.d/mysql restart

Can’t locate DBI/DBD.pm in @INC

今天gentoo更新时,mysql升级了,运行revdep-rebuild时,提示dev-perl/DBD-mysql需要重新编译。结果在编译过程中出错:

Can’t locate DBI/DBD.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl5/5.16.1/i686-linux /usr/local/lib/perl5/5.16.1 /usr/lib/perl5/vendor_perl/5.16.1/i686-linux /usr/lib/perl5/vendor_perl/5.16.1 /usr/local/lib/perl5/5.16.0/i686-linux /usr/local/lib/perl5/5.16.0 /usr/local/lib/perl5 /usr/lib/perl5/vendor_perl/5.16.0/i686-linux /usr/lib/perl5/vendor_perl/5.16.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.16.1/i686-linux /usr/lib/perl5/5.16.1 .)

网上搜索一番,也有一些解决办法,但后来发现dev-perl/DBD-mysql这货是perl连接mysql数据库的,我又不用perl,要它干什么?

于是,将mysql中的perl这个USE去掉,运行emerge –depclean && revdep-rebuild后,干掉了相关的8个包。一切都清静了。。。

后来发现,稳定版gentoo中的mysql默认不开启perl这个USE。

archlinux中安装nginx+mysql+php

在新装的archlinux中安装了LNMP环境,记录一下:

1、安装软件:

pacman -S nginx mysql php-fpm php-gd

2、配置nginx:

vi /etc/nginx/nginx.conf

3、作为服务启动(systemd环境):

systemctl enable nginx.service

systemctl enable mysqld.service

systemctl enable php-fpm.service

先简单记一下,回头再细化。

修改mysql的root密码

修改mysql的root密码的方式有许多种,但个人感觉最简单的是用mysqladmin命令:

mysqladmin -u root -p password 新密码

出现“Enter password:”提示后,输入旧密码即可。

centos6下yum安装tomcat+mysql

1、安装tomcat和mysql:

yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps tomcat6-docs-webapp tomcat6-javadoc mysql-server java-1.6.0-openjdk

2、设置mysql密码:

service mysqld start
mysqladmin -u root password '密码'

3、设置mysql和tomcat开机启动:

chkconfig mysqld on
chkconfig tomcat6 on

4、开放8080端口:

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

5、站点根目录及配置文件位置:

/usr/share/tomcat6/webapps/ROOT
/etc/tomcat6

6、测试:
http://localhost:8080

tomcat6

debian6安装nginx+mysql+php-fpm

debian6.0.4下安装nginx+mysql+php-fpm,在虚拟机中测试成功。

1、在/etc/apt/sources.list中添加nginx及php-fpm的源:

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

下载并添加dotdeb的gpg:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

2、安装nginx、php-fpm、mysql:

apt-get install nginx php5-fpm php-apc php5-mysql php5-curl php5-gd php5-idn php-pear php5-mcrypt php5-memcache php5-ming mysql-server

3、修改nginx配置文件,支持php:

vi /etc/nginx/conf.d/default.conf
location / {
root   /usr/share/nginx/html;
index  index.php index.html index.htm;
}
#location ~ .php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
#    include        fastcgi_params;
#}

删除上面蓝色字体字符及前面的#号,红色字体为网站目录。

4、重启nginx:

service nginx restart

debian安装网站程序比其他系统方便的地方,nginx、php和mysql安装完成后,自动启动并加入系统启动中。

centos6安装nginx+mysql+php-fpm[2013/12/1更新]

最新:在centos6.5中测试通过。

昨天在虚拟机中安装了一个centos6+nginx+mysql+php-fpm环境,记录了一下安装过程。centos6建议以netinstall方式安装,安装一个最小化的server,配置好网站环境后,虚拟机中的大小为700M左右。下面是安装配置nginx+mysql+php-fpm过程:

1、加源,更新:

# rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# yum update

2、安装nginx+mysql+php-fpm:

# yum install nginx php-fpm mysql-server php-mysql php-mbstring php-gd php-pear -y

3、设置mysql密码及mysql、nginx、php-fpm开机启动:

# service mysqld start
# mysqladmin -u root password '密码'
# chkconfig nginx on
# chkconfig mysqld on
# chkconfig php-fpm on

注:默认安装启动php-fpm时,出现如下错误:

正在启动 php-fpm:[28-Nov-2011 08:11:01] ERROR: [pool www] cannot get uid for user 'apache'

解决办法:

# vi /etc/php-fpm.d/www.conf

找到以下两行:

user = apache
group = apache

将其中的apache都改为nginx。

4、开启80端口(默认是关闭的):

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# service iptables save
# service iptables restart

5、修改nginx配置文件,启动nginx和php-fpm:

# vi /etc/nginx/conf.d/default.conf

添加php默认文件:

location / {
root   /usr/share/nginx/html;
index  index.php index.html index.htm;
}

修改以下代码,添加php支持:

# location ~ .php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
#    include        fastcgi_params;
#}

删除上面所有的#和蓝色字体部分。启动nginx和php-fpm:

# service nginx start
# service php-fpm start

6、用filezilla上传网站至/usr/share/nginx/html。

gentoo下安装Nginx+Mysql+Php(fpm)

由于php-fpm集成到了php3.8中,gentoo下安装Nginx+Mysql+Php(fpm)环境,简直是太简单了:
1、添加以下USE到/etc/portage/package.use

dev-lang/php fpm ming xml curl mysql cgi ctype gd hash nginx

其他组件也可以在这里添加。
2、安装nginx、php、和mysql:

emerge nginx php mysql

3、添加开机启动项:

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

4、安装mysql数据库、设置mysql的root密码:

/usr/bin/mysql_install_db
/etc/init.d/mysql start
/usr/bin/mysqladmin -u root password '密码'

5、修改nginx配置(/etc/nginx/nginx.conf)。

更改网站的根目录,添加php默认文件:

location / {
root   /var/www/localhost/htdocs;
index  index.php index.html index.htm;
}

修改到下代码,添加php支持:

# location ~ .php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /var/www/localhost/htdocs$fastcgi_script_name;
#    include        fastcgi_params;
#}

删除上面所有的#和其中一行(蓝色字体部分),修改网站目录和前面一致。启动nginx和php-fpm:

# /etc/init.d/nginx start
# /etc/init.d/php-fpm start

6、用filezilla上传网站至/var/www/localhost/htdocs。

freebsd上搭建nginx+php(fpm)+mysql环境

以前我写的一篇文章,现在转到这里。
基于freebsd8.2系统。
1、开放ssh:

vi /etc/inetd.conf

去掉ssh前的#
允许root登录:

vi /etc/ssh/sshd_config
PermitRootLogin yes

重启ssh:

service sshd restart

2、安装多线程下载工具更新

cd /usr/ports/ftp/axel
make install clean

然后:

vi /etc/make.conf

添加如下代码

FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
MASTER_SITE_BACKUP?=http://mirrors.163.com/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}

注:最后两行是使用163的源
3、下载更新:

#portsnap fetch extract

4、安装nginx

cd /usr/ports/www/nginx
make install clean

设置开机启动:

echo nginx_enable="YES" >> /etc/rc.conf

5、安装php5、fpm

cd /usr/ports/lang/php5

选择支持 fastCGi和php-fpm

make config
make install clean
cd /usr/ports/lang/php5-extensions/
make config
make install clean

设置fpm开机启动

echo php_fpm_enable="YES" >> /etc/rc.conf

6、php.ini

cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
vi /usr/local/etc/php.ini

修改

;date.timezone =

date.timezone = 'Asia/Shanghai'

7、安装mysql

cd /usr/ports/databases/mysql51-server
make install clean

设置mysql开机启动:

echo mysql_enable=”YES” >> /etc/rc.conf

添加root密码:

mysqladmin -u root password yourpassword

8、安装eaccelertor

cd /usr/ports/www/eaccelerator
make install clean
vi /usr/local/etc/php/extensions.ini

添加

extension=eaccelerator.so

安装Memcache扩展

cd /usr/ports/databases/pecl-memcache
make install clean