mysql按指定顺序排序

2017-5-28 寒川 网页编程

直接上语句:

select * from tablename where id in(1,5,9,2,4) order by  find_in_set(id,'1,5,9,2,4');
select * from tablename where id in(1,5,9,2,4) order by substring_index('1,5,9,2,4',id,1);
select * from a tablename a in(1,5,9,2,4) order by field(id,1,5,9,2,4)

标签: mysql order 排序

评论(0) 浏览(4309)

Linux/Centos源码安装配置Nginx+PHP+MySQL

2016-5-24 寒川 计算机

一、安装前准备:
1、装源码安装环境(一大堆的依赖)
yum install gcc gcc-c++ ncurses-devel perl
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel #nginx要用
yum install -y libxml2-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel
yum install -y fontconfig fontconfig-devel libXpm* libtool* libxml2 curl curl-devel libpng libjpeg* libsepol-devel glibc gd php-gd libvpx-devel

2、装cmake(mysql编译需要)
wget https://cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap; make ; make install
cd ~
二、装nginx
1、增加www用户组及用户
groupadd www
useradd -g www www -s /bin/false


2、增加nginx的缓存文件夹

mkdir -p /var/cache/nginx/client_temp


3、下载解压进入目录:
wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar -zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15

4、编译配置:
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-pcre \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'


5、编译安装
make && make install
cd ~
6、启动
nginx -c /usr/local/nginx/nginx.conf
7、停止|重启
nginx -s stop|reload

三、装mysql
1、增加mysql用户组及用户
groupadd mysql
useradd -r -g mysql mysql
2、创建相关目录
mkdir -p /usr/local/mysql
mkdir -p /data/mysqldb
3、下载解压进入目录
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.30.tar.gz
tar -zxv -f mysql-5.6.30.tar.gz
cd mysql-5.6.30



4、设置编译参数
装mysql-5.6.30版
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   
-DDEFAULT_CHARSET=utf8 \   
-DDEFAULT_COLLATION=utf8_general_ci \   
-DWITH_INNOBASE_STORAGE_ENGINE=1 \   
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \   
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   
-DMYSQL_DATADIR=/data/mysqldb \   
-DMYSQL_TCP_PORT=3306 \   
-DENABLE_DOWNLOADS=1

注:重新运行配置,需要删除CMakeCache.txt文件
rm CMakeCache.txt

5、编译源码
make && make install

6、修改mysql目录所有者和组
6.1、修改mysql安装目录
cd /usr/local/mysql
chown -R mysql:mysql .

6.2、修改mysql数据库文件目录
cd /data/mysqldb
chown -R mysql:mysql .

7、初始化mysql数据库
cd /usr/local/mysql   
scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb

8、复制mysql服务启动配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

9、复制mysql服务启动脚本
cp support-files/mysql.server /etc/init.d/mysqld   

10、增加执行权限
chmod 755 /etc/init.d/mysqld 

11、加入开机启动
chkconfig mysqld on 

12、mysql服务加入PATH路径
vim /etc/profile 
文件最后加入  
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH  
export PATH
esc :wq

13、使配置生效
source /etc/profile  
14、启动
service mysqld start 

15、检查mysql服务是否启动
netstat -tulnp | grep 3306   
mysql -u root -p
密码为空,如果能登陆上,则安装成功。

16、修改MySQL用户root的密码
mysqladmin -u root password 'qiawei88'

四、装php5.6
1、下载解压进入目录
cd ~
wget http://cn2.php.net/distributions/php-5.6.21.tar.gz
tar -zxv -f php-5.6.21.tar.gz
cd php-5.6.21
2、编译配置
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-pdo-mysql=/usr/local/mysql \
--with-gd --with-png-dir=/usr/local/libpng \
--with-jpeg-dir=/usr/local/jpeg \
--with-freetype-dir=/usr/local/freetype \
--with-xpm-dir=/usr/ \
--with-vpx-dir=/usr/local/libvpx/ \
--with-zlib-dir=/usr/local/zlib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--disable-fileinfo \
--enable-ctype


3、编译安装
make && make install

4、复制php配置文件到安装目录
cp php.ini-production /usr/local/php/etc/php.ini 

5、删除系统自带配置文件
rm -rf /etc/php.ini 

6、添加软链接到 /etc目录
ln -s /usr/local/php/etc/php.ini /etc/php.ini 

7、拷贝模板文件为php-fpm配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 
8、添加软连接到 /etc目录
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf

9、编辑php-fpm.conf 
vi /usr/local/php/etc/php-fpm.conf 

user = www #设置php-fpm运行账号为www
group = www #设置php-fpm运行组为www
pid = run/php-fpm.pid #取消前面的分号
:wq! #保存退出

10、拷贝php-fpm到启动目录
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

11、添加执行权限
chmod +x /etc/rc.d/init.d/php-fpm

12、设置开机启动
chkconfig php-fpm on #

五、配置nginx支持php

1、修改nginx.com的配置
vi /usr/local/nginx/nginx.conf

修改/usr/local/nginx/nginx.conf 配置文件,需做如下修改

user www www; #首行user去掉注释,修改Nginx运行组为www www;
必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错
index index.php index.html index.htm; #添加index.php

#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}
#此段注释改为下面的内容
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # /scripts$fastcgi_script_name
include        fastcgi_params;
}

2、重启nginx
nginx -s reload 

3、启动php-fpm
service php-fpm start 


六、其他:
修改目录权限
chown -R www /usr/local/nginx/html
chgrp -R www /usr/local/nginx/html

标签: php mysql linux nginx lnmp

评论(4) 浏览(5128)

mysql视图学习记录

2016-4-17 寒川 计算机

先说说mysql视图和mysql表的区别,网上copy来的,但说得很准,了解 下。
1.视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。

2.视图没有实际的物理记录,而基本表有。

3.表是内容,视图是窗口。

4.表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以即使对它进行修改,但视图只能创建的语句来修改。

5.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度来看,视图可以防止用户接触数据表,因而用户不知道表的结构。

6.表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

7.视图的建立和删除只影响视图本身,不影响对应的基本表。

联系:

视图是在基本表之上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

视图的建,改,删:


--新建
create view myview as select * from mytalbe;

--修改
alter view myview as select * from newtable;
--删除
drop view myview;


标签: mysql mysql视图

评论(0) 浏览(5140)

MySQL一次查询所有分类前N条记录

2016-4-4 寒川 网页编程

遇到这么一个需求,需要查询所有分类的文章记录,同时要求各分类的前N条,文章的数据表大概如下:

id:文章ID

category_id:分类ID

title:标题

……

其它字段等。

现在要求的就是各分类的前N条记录,此处设N为10,MySQL语句如下:

SELECT a.* FROM article a
WHERE 10>=(
SELECT COUNT(*) FROM article b
WHERE a.category_id=b.category_id AND a.id<=b.id)
ORDER BY a.category_id,a.id desc

标签: mysql sql

评论(0) 浏览(6653)

随便终结一下,老是容易忘记,记录下来以便下次不用去百度

2014-7-29 寒川 计算机

linux更改文件及文件夹用户及用户组,这是简单的命令,这是记不住,放这儿加深一下印象。


chgrp -R www /www/web #修改用户组为www
chown -R www /www/web#修改用户为www
mysql导入导出



mysqldump -u root -p data > db.sql#将db.sql导入data数据库
mysqldump -u root -p data < db.sql#将data数据库导出为db.sql


标签: mysql linux

评论(1) 浏览(8823)

mysql limit 优化分页查询

2014-5-28 寒川 计算机

最近做的一个网站谷歌站长工具提示sitemap访问超时,这是为毛原因呢?之前不是好好的么?进入mysql发现某个进程等待时间比较长,进一步发现原来是这样分页的mysql语句,因为文章比较多,而且是直接生成xml文件,全部笼统第调出所有文章aid,然后由php组和生成sitemap,我的分页mysql,类似如下:

select aid from articles order by aid limit 80000,4000
当然,前面几页数据还挺快的,上了一二十页后,等待的时间特别长。最终优化如下:


select aid from  articles  where aid >=(select aid from articles order by aid limit 80000,1) order by  aid desc limit 4000

这样一来,效率瞬间提高。有木有?必须得有阿。

最后做个小总结:直接用limit分页查询,在数据量较小的情况下那是相当给力,随着翻页到后面,效率瞬间下降,于是用上面第二句可解决问题。此两句结合使用,将是天下无双了吧。

标签: mysql limit优化 sitemap

评论(0) 浏览(8515)

linux如何修改mysql数据库数据存放位置

2014-3-22 寒川 计算机

linux如何修改mysql数据库数据存放位置?这个问题很简单,只是记录下来,方便以后使用,自己喜欢用虚拟机鼓捣wdapache,就以wdapache环境为例。共计步完成mysql数据库数据存放位置更改。

1、停止mysql数据库服务器:


service mysqld stop
2、将数据库所有数据移动到新的位置,我的wdapache服务器的mysql数据库位于/www/wdlinux/mysql/var/这个目录,我数据盘加载于/data/目录下方,,如:


cp -pR /www/wdlinux/mysql/var/ /data/mysql/


3、修改mysql配置文件my.cnf,在[mysqld]下增加一行:


datadir=/data/mysql
保存,退出。


4、启动mysql数据库。


service mysqld start


标签: mysql linux my.cnf

评论(1) 浏览(10177)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap