mysql的编译安装不是使用./configure 而是使用cmake,这点大家需要注意:
一:安装好编译环境,三个包组:“Development tools”
“Desktop platform Development”
“Server platform Development”
二:编译安装MySQL
1:安装cmake
#yum -y install cmake28
注意,我们安装的是cmake比较新的版本,cmake28,使用的时候需要使用cmake28而不是cmake.
3:获取MySQL的源码包并解压
# tar xf mysql-5.5.33.tar.gz # cd mysql-5.5.33
4:创建MySQL用户MySQL组
# groupadd -r mysql # useradd -g mysql -r -d /mydata/data mysql
5:编译安装:
# cmake28 . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DSYSCONFDIR=/etc/mysql -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
解说一下安装配置:
1:-DCMAKE_INSTALL_PREFIX=--->安装路径
2: -DMYSQL_DATADIR=--->数据库目录
3:DSYSCONFDIR=--->配置文件存放位置
4:-DWITH_INNOBASE_STORAGE_ENGINE=1--->安装存储引擎INNOBASE
5:-DWITH_ARCHIVE_STORAGE_ENGINE=1--->安装存储引擎ARCHIVE
6:-DWITH_BLACKHOLE_STORAGE_ENGINE=1--->安装存储引擎BLACKHOLE
7:-DWITH_READLINE=1--->客户端的交互工具,可以让我们使用history等高级功能
8:-DWITH_SSL=system--->编译SSL功能
9:-DWITH_ZLIB=system--->编译压缩传输功能
10:-DWITH_LIBWRAP=0--->不使用WRAP管理功能
11:-DMYSQL_UNIX_ADDR=/tmp/mysql.sock--->Unix sock的位置,
12:-DDEFAULT_CHARSET=utf8--->默认使用字符集
13:-DDEFAULT_COLLATION=utf8_general_ci
OK!接着编译安装
# make && make install
6:如果我们要使用ssl zlib readline等工具还需要安装他们的devel包
# yum install openssl-devel readline-devel zlib-devel
三:安装完成MySQL,我们要初始化MySQL
1:提供配置文件my.cnf,MySQL的配置文件很多:
/etc/my.cnf
/etc/mysql/my.cnf
$MySQL_HOME/My.cnf
安装时使用了--defaults-extra-file= 指定的路径
~/.my.cnf
读取配置文件次序的命令:
/usr/local/mysql/bin/mysqld --help --verbose
我们提供的配置文件是/etc/my.cnf
# cd /usr/local/mysql/support-files # cp my-large.cnf /etc/my.cnf
2:提供服务脚本
# cp mysql.server /etc/rc.d/init.d/mysqld
# ll /etc/rc.d/init.d/mysqld --->确保有执行权限。
# chkconfig --add mysqld --->加入服务脚本
# chkconfig mysqld on --->开启启动
3:创建数据库存储路径:/data/mydata 数据库的存储位置最好存放在逻辑卷上,方便我们以后的扩展。
# mkdir /data/mydata -p --->创建目录
# pvcreate /dev/sda3 --->创建物理卷
# vgcreate mysql /dev/sda3 --->创建
# lvcreate -n mysqldata -L 10G mysql --->创建逻辑卷
# mke2fs -t ext4 /dev/mysql/mysqldata --->格式化
# vim /etc/fstab --->开机自动挂载
/dev/mysql/mysqldata /data/mydata ext4 defaults 0 0
4:因为我们修改了mysql的默认数据库存储路径,所以我们需要在配置文件里告诉它数据存储的位置在哪里。
# vim /etc/my.cnf
5:修改 /usr/local/mysql/*的属组为mysql
# chown -R .mysql ./*
6:初始化MySQL:/usr/local/mysql/scripts/mysql_install_db就是初始化MySQL的脚本文件。
# scripts/mysql_install_db --datadir=/data/mydata --user=mysql
7:我们cd到/usr/local/mysql/bin,ls查看一下:其实在服务器端有3个启动服务的命令,客户端有两个。
服务器端:mysqld
mysqld_safe --->默认其实启动的是这一个
mysqld_multi --->启动多线程是使用这一个
客户端:mysql
mysqladmin
备份工具:mysqldump
8:导出命令工具到环境变量PATH
# vim /etc/profile.d/mysql.sh
exportPATH=/usr/local/mysql/bin:$PATH
# . /etc/profile.d/mysql.sh
四:连接上MySQL我们需要做一些简单的安全操作:简单介绍几个MySQL命令,2个通配符
1:SHOW DATABASES; ---> 显示所有数据库库文件
2:use db_name; --->默认使用那个数据库
4:SHOW DATABASES; --->显示默认数据库内的所有表
5:SET PASSWORD FOR ‘username‘@‘hostname‘ = PASSWORD(‘yourpassword‘) --->给用户设置密码
6:DESC tb_name --->查看某表的信息。
7:SELECT col1,col2,...FROM tb_name; --->查询某表的某些字段
8:CREATE user ‘username‘@‘hostname‘; --->创建某用户,host可以用通配符匹配。
9:DROP user ‘username‘@‘hostname‘; --->删除某用户
10:% ---> 任意长度的任意字符
11:_ ---> 匹配任意单个字符
那我们需要做的操作就是把user表的匿名用户删除,给管理员root添加密码
mysql> drop user ‘‘@‘localhost‘; Query OK, 0 rows affected (0.00 sec) mysql> drop user ‘‘@‘station65.magelinux.com‘; Query OK, 0 rows affected (0.00 sec) mysql> setpassword forroot@localhost = PASSWORD(‘redhat‘); Query OK, 0 rows affected (0.00 sec)
顺便说下另外两种给用户设置密码的命令
1:update
mysql> update user set password = PASSWORD(‘centos‘) where user = ‘root‘;
给所有用户都添加密码了。
# mysqladmin -uroot -hlocalhost password ‘redhat‘ -p
我们连入ySQL服务器后,数据库MySQL为默认管理库。内部的user表与客户认证相关,所以我们以上修改密码、删除匿名用户的操作都是在user表中完成。
五:MySQL的客户端工具:
1:mysql
2:mysqladmin
3:mysqldump
4:mysqlcheck
这些工具都有一些通用命令行选项:
1:-u, --user= 指定用户
2:-h, --host= 指定主机
3:-p, --password= 输入登录密码
4:--protocol={tcp|socket} 指定协议
5:--port= 指定端口
还有一些非客户端类的管理工具
1:myisamchk 打包压缩工具
2:myisampack 检测工具检测myusam表是否有误
六:mysql客户端工具的用法:
mysql的工作模式分:
1:交互式模式 mysql>
交互式模式的命令分
1:客户端命令:
客户端命令获取帮助信息:mysql> help
mysql> \?
简单介绍几个常用命令
1:\c :终止执行当前命令
2:\q :退出
3:\g :不管结束符是什么都将命令提交给服务器,并以表格形式显示
4:\G :以行的形式显示输出结果
5:\s :status 状态信息
6:\. :source 一个mysql脚本
2:服务器端命令:因为服务器端命令需要提交服务器,所以服务器端命令都跟命令结束符默认为分号(;)
帮助信息获取:help keyword
获取有 那些关键字:help contents 关键字的分组信息。
2:脚本模式:mysql < /path/to/mysql_script.sql
mysql的快捷键:
Ctrl + w: 删除光标之前的单词
Ctrl + u: 删除光标之前至命令行首的所有内容
Ctrl + y: 粘贴使用Ctrl+w或Ctrl+u删除的内容
Ctrl + a: 移动光标至行首
Ctrl + e: 移动光标至行尾
mysql命令行选项:
1:--compress 压缩传输
2:--default-character-set=charset_name 发送时默认字符集
3:-V:mysql的版本
4:-v:显示详细信息
5:--ssl-ca=/path/to/ssl_ca_file ca的存放路径
6:--ssl-capath=/path/to/ca_dir 多个ca的存放目录
7:--ssl-cert=/path/to/cert_file 自己的证书
8:--ssl-cipher=cipher_list :号分隔的加密方式
9:--ssl-key=/path/to/key_file 自己的私钥文件
10:--ssl-verify-server-cert 验证服务器端证书。
11:--database,-D 直接指定要使用的默认库。
12:-H, --html:输出结果为html格式的文档
13:-X, --xml: 输出格式为xml
14:--safe-updates: 拒绝使用无where子句的update或delete命令;
七:客户端工具mysqladmin的使用说明:
mysqladmin是在本地使用的命令,不是连入mysql以后使用的。
1:使用格式:mysqladmin [options] command [arg] [command [arg]] ...
command是mysqladmin的子命令:说一下command 子命令都有哪些
1:create db_name 指定要创建的数据库
# mysqladmin -uroot -p cerate mydb
# mysql -uroot -p -e ‘show databases;‘
3:debug: 打开调试日志并记录于error log中
4:status:显示简要状态信息,还可以跟--sleep、--count 选项
睡眠1秒,批次显示5次。
5:extended-status: 输出mysqld的各状态变量及其值,相当于执行“mysql> SHOW GLOBAL STATUS”
7:flush-hosts: 清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表。
注意:这个命令还是比较重要的,希望童鞋们谨记。
8:flush-logs: 日志滚动,主要是二进制日志和中继日志
9:refresh: 相当于同时使用flush-logs和flush-hosts
10:flush-privileges: 重读授权表 功能跟reload 等同。
11:flush-status: 重置状态变量的值 不是所有,是当前会话,不是全局。
12:flush-tables: 关闭当前打开的表文件句柄下一步通常是请求锁定这张表。
13:flush-threads:清空线程缓存池
14:kill: 杀死指定的线程,指定线程ID,可以一次杀死多个线程,以逗号分隔,但不能有多余空格
15:password: 修改当前用户的密码
16:ping :检测MySQL是否在线的一个命令
17: processlist:显示mysql线程列表
可以看到已经没有监听3306端口。
19:start-slave
stop-slave: 启动/关闭从服务器线程
OK,MySQL的一些简单用法先介绍到这里。请关注下次的博客,有更多内容分享。