cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。


一、安装cmake

yum -y install cmake


如果需要解决以来关系:

yum -y install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel  pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devel libxml2-devel curl-devel  libicu libicu-devel libmcrypt libmcrypt-devel libmhash libmhash-devel


二、编译安装mysql-5.5.33

1、cmake使用方法及参数介绍

           cmake指定编译选项的方式不同于make,其实现方式对比如下:

./configure           cmake .
./configure --help    cmake . -LH or ccmake .


   参数说明:

指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DMYSQL_DATADIR=/data/mysql //数据库存放目录
-DSYSCONFDIR=/etc //MySQL配置文件
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1 //快捷键功能
-DWITH_SSL=system //SSL
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
-DDEFAULT_CHARSET=utf8   //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all   //安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 //MySQL监听端口
-DMYSQL_USER=mysql //MySQL用户名
-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区
-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径


如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt



   2、编译安装mysql

       下载安装包:



wget 172.16.0.1:/pub/Sources/sources/mysql/mysql-5.5.33.tar.gz


       ①、准备数据存放的文件系统        

           新建一个逻辑卷,并将其挂载至特定目录即可。        

      这里其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。

mkdir /mydata

wKioL1M-ndDT3PpjAAHU_Vk7y5I995.jpg

wKioL1M-neuA7yuAAAFNR3A6F98512.jpg

开机自动挂载:

wKiom1M-nqugsZZQAALBAL2j8OU712.jpg

mkdir /mydata/data


②、新建用户以安全方式运行进程:

1
2
3
groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
chown -R mysql:mysql /mydata/data

③、安装

cd /root
tar xf mysql-5.5.33.tar.gz
cd mysql-5.5.33
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install


      ④、为mysql提供主配置文件:

1

 cd /usr/local/mysql

chown -R root  .
cp support-files/my-large.cnf  /etc/my.cnf


      并修改/etc/my.cnf

       中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:        

thread_concurrency = 2

      另外还需要添加如下行指定mysql数据文件的存放位置:                                    

datadir = /mydata/data


      ⑤、为mysql提供sysv服务脚本:
1
2
3
4
5
6
cd /usr/local/mysql
cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
添加至服务列表:
chkconfig --add mysqld
chkconfig mysqld on
 
    

  而后就可以启动服务测试使用了。


wKiom1MumyPzHu5sAACO9PtCwXE849.jpg


为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:


      ⑥、输出mysql的man手册至man命令的查找路径:  

       编辑/etc/man.config,添加如下行即可:

1
MANPATH  /usr/local/mysql/man

       ⑦、输出mysql的头文件至系统头文件路径/usr/include:

  这可以通过简单的创建链接实现:

1
ln -sv /usr/local/mysql/ include /usr/ include /mysql

       ⑧、输出mysql的库文件给系统库查找路径:


1
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

1
ldconfig


       ⑨、修改PATH环境变量,让系统可以直接使用mysql的相关命令。

      vim /etc/profile.d/mysql.sh

1

 export PATH=/usr/local/mysql/bin:$PATH



重读环境变量文件

1
. /etc/profile.d/mysql.sh

      service mysqld start


⑩、第一次进入数据库

       删除所有匿名用户    

mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'www.magedu.com';


三、Linux下mysql一些基本命令


 启动:service mysqld start;

 进入:mysql ; mysql -u root -p  ; mysql -h localhost -u root -p databaseName;

 列出数据库:show databases;

 选择数据库:use databaseName;

 列出表格:show tables;

 显示表格列的属性:show columns from tableName;

 建立数据库:source fileName.txt;


   给所有的root用户设定密码:

       第一种方式:

mysql> SET PASSWORD FOR username@host = PASSWORD('your_passwrod');

       第二种方式:

mysql> UPDATE user SET password = PASSWORD('your_password') WHERE user = 'root';

mysql> FLUSH PRIVILEGES;

       第三种方式:

mysqladmin -uUserName -hHost password 'new_password' -p

mysqladmin -uUserName -hHost -p flush-privileges


 匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; _: 匹配任意单个字符

 增加一个字段:alter table tabelName add column fieldName dateType;

 增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;

 多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;

 增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";

 每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;

 查询时间:select now();

 查询当前用户:select user();

 查询数据库版本:select version();

 查询当前使用的数据库:select database();


 1、删除student_course数据库中的students数据表:

     rm -f student_course/students.*


2、备份数据库:(将数据库test备份)

 mysqldump -u root -p test>/tmp/test.txt

 备份表格:(备份test数据库下的mytable表格)

 mysqldump -u root -p test mytable>/tmp/test1.txt

 将备份数据导入到数据库:(导回test数据库)

 mysql -u root -p test


mysql的快捷键:

Ctrl + w: 删除光标之前的单词

Ctrl + u: 删除光标之前至命令行首的所有内容

Ctrl + y: 粘贴使用Ctrl+w或Ctrl+u删除的内容

Ctrl + a: 移动光标至行首

Ctrl + e: 移动光标至行尾



mysqldmin工具:

mysqladmin [options] command [arg] [command [arg]] ...

command:

create DB_NAME

drop DB_NAME

debug: 打开调试日志并记录于error log中;

status:显示简要状态信息

--sleep #: 间隔时长

--count #: 显示的批次

extended-status: 输出mysqld的各状态变量及其值,相当于执行“mysql> SHOW GLOBAL STATUS”

variables: 输出mysqld的各服务器变量

flush-hosts: 清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表

flush-logs: 日志滚动,二进制日志和中继日志

refresh: 相当于同时使用flush-logs和flush-hosts

flush-privileges:

reload: 功能同flush-privileges

flush-status: 重置状态变量的值

flush-tables: 关闭当前打开的表文件句柄

flush-threads:清空线程缓存

kill: 杀死指定的线程,可以一次杀死多个线程,以逗号分隔,但不能有多余空格

password: 修改当前用户的密码;

ping:

processlist:显示mysql线程列表

shutdown: 关闭mysqld进程;

start-slave

stop-slave: 启动/关闭从服务器线程