[rhel5.8]MySQL5.5.12编译安装

  • 之前的虚拟机被误删除了,这按照之前的笔记重新进行编译一次,这次的编译过程更加的详细
  • 安装准备

    rhel5.8 172.25.23.14
    kernel version: 2.6.18-308.el5
    mysql-5.5.12.tar.gz cmake-2.8.4.tar.gz 系统自带的软件版本为2.6.4,有点早;
    虚拟机内存大于2048
    硬盘空间大小大于20G

  • 安装环境准备,确保安装开发环境组件

Development Libraries
Development Tools
  • 如果没有安装使用,下面的命令进行安装
[root@server60 ~]# yum groupinstall "Development Libraries Development Tools" -y 
  • 第一部肯定是解压软件包
[root@server60 ~]# tar xf cmake-2.8.4.tar.gz 
[root@server60 ~]# tar xf mysql-5.5.12.tar.gz 
  • 首先编译安装的是cmake,如果不需要指定特殊的选项,可以直接使用默认的选项进行安装
[root@server60 cmake-2.8.4]# ./configure  大约两三分钟
  • 根据提示执行make && make install
    这里写图片描述
  • 执行make,大约四分钟左右
[root@server60 cmake-2.8.4]# make 

这里写图片描述

  • 接下来执行make install
[root@server60 cmake-2.8.4]# make install 

这里写图片描述

  • 准备MySQL的环境
  • 这里是用来逻辑卷提供给MySQL来使用;
  • 这里已经为虚拟机添加了一块磁盘
    这里写图片描述
  • 格式化,并且调整分区类型为8e
    这里写图片描述

  • 接下来是制作卷组的过程

[root@server60 ~]# pvcreate /dev/vdb1 
  Writing physical volume data to disk "/dev/vdb1"
  Physical volume "/dev/vdb1" successfully created 
[root@server60 ~]# vgcreate mysqlvg /dev/vdb1 
  Volume group "mysqlvg" successfully created
[root@server60 ~]# lvcreate -L 16G -n mysqldate mysqlvg
  Logical volume "mysqldate" created
  • 查看创建的逻辑卷

这里写图片描述

  • 接下来进行逻辑卷的格式化操作,然后就可以进行挂载使用了
[root@server60 ~]# mke2fs -j /dev/mysqlvg/mysqldate 
  • 这个逻辑卷作为Mysql的数据目录使用
[root@server60 ~]# mkdir -pv /mysql/mydata
mkdir: created directory `/mysql'
mkdir: created directory `/mysql/mydata'
  • 然后进行自动挂载操作
[root@server60 ~]# vim /etc/fstab 
/dev/mysqlvg/mysqldate  /mysql/mydata/          ext3    defaults        0 0 
  • 创建运行mysql的相关用户和组
[root@server60 ~]# groupadd -r mysql
[root@server60 ~]# useradd -r -g mysql -s /sbin/nologin mysql
  • 更改挂载目录的属主和属组
[root@server60 ~]# chown -R  mysql.mysql /mysql/mydata/

这里写图片描述

  • 编译安装MySQL
  • 检查一下CMAKE的环境变量
    这里写图片描述
  • 使用命令查看编译环境
[root@server60 mysql-5.5.12]# cmake . -LH  //这个过程第一次需要执行一段时间
// CXX compiler.
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++

// C compiler.
CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc

// install prefix
CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql

// Set to true if this is a community build
COMMUNITY_BUILD:BOOL=ON

// Enable profiling
ENABLED_PROFILING:BOOL=ON

// Enable debug sync (debug builds only)
ENABLE_DEBUG_SYNC:BOOL=ON

// Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer), RPM, DEB, SVR4
INSTALL_LAYOUT:STRING=STANDALONE

// default MySQL data directory
MYSQL_DATADIR:PATH=/usr/local/mysql/data

// MySQL maintainer-specific development environment
MYSQL_MAINTAINER_MODE:BOOL=OFF

// Link ARCHIVE statically to the server
WITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF

// Link BLACKHOLE statically to the server
WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF

// Use dbug/safemutex
WITH_DEBUG:BOOL=OFF

// Compile MySQL with embedded server
WITH_EMBEDDED_SERVER:BOOL=OFF

// Options are: none, complex, all
WITH_EXTRA_CHARSETS:STRING=all

// Link FEDERATED statically to the server
WITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF

// Link INNOBASE statically to the server
WITH_INNOBASE_STORAGE_ENGINE:BOOL=ON

// Use bundled libedit
WITH_LIBEDIT:BOOL=ON

// Compile with tcp wrappers support
WITH_LIBWRAP:BOOL=OFF

// Link PARTITION statically to the server
WITH_PARTITION_STORAGE_ENGINE:BOOL=ON

// Link PERFSCHEMA statically to the server
WITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON

// Generate PIC objects
WITH_PIC:BOOL=OFF

// Use bundled readline
WITH_READLINE:BOOL=OFF

// Options are : no, bundled, yes (prefer os library if present otherwise use bundled), system (use os library)
WITH_SSL:STRING=no

// Compile MySQL with unit tests
WITH_UNIT_TESTS:BOOL=ON

// Valgrind instrumentation
WITH_VALGRIND:BOOL=OFF

// Which zlib to use (possible values are 'bundled' or 'system')
WITH_ZLIB:STRING=system
  • 上面会生成大量的默认的配置选项,需要修改下面的这个选项
    这里写图片描述
  • 这里选择指定一下的选项进行安装
[root@server60 mysql-5.5.12]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> DMYSQL_DATADIR=/mysql/mydata \
> -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 \
> -DWITH_UNIX_ADDR=/tmp/mysql.sock \
  • 可以得到下面输出信息
    这里写图片描述
  • 然后可以执行make操作
[root@server60 mysql-5.5.12]# make //这个过程相当漫长

这里写图片描述
* 最后执行make install

[root@server60 mysql-5.5.12]# make install 

这里写图片描述

  • 编译完成之后的工作
  • 修改安装完成之后的属组
[root@server60 mysql-5.5.12]# chown -R  :mysql /usr/local/mysql/
  • 完成数据库的初始化
[root@server60 mysql]# cd /usr/local/mysql
[root@server60 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/mysql/mydata/

这里写图片描述
* 复制相关的配置文件到指定的位置

[root@server60 mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@server60 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@server60 mysql]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
  • 这里修改一下配置文件my.cnf并且添加修改后的数据路径位置
[root@server60 mysql]# vim /etc/my.cnf 
datadir = /mysql/mydata
  • 接下来添加mysql的环境变量
[root@server60 mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin/
  • 然后更新环境变量
[root@server60 mysql]# source /etc/profile.d/mysql.sh

这里写图片描述
* 然后启动服务
这里写图片描述
* 第一次连接服务
这里写图片描述

  • 查看支持的存储引擎
mysql> show ENGINES\G;
*************************** 1. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
8 rows in set (0.00 sec)
  • 默认的存储引擎是这个
    这里写图片描述
  • 删除匿名用户
    这里写图片描述
mysql> DROP USER ''@'server60.com';
Query OK, 0 rows affected (0.00 sec)

mysql> DROP USER ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> DROP USER 'root'@'::1';
Query OK, 0 rows affected (0.00 sec)
  • 为用户添加密码
mysql> UPDATE user SET Password=PASSWORD('westos') WHERE User='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

这里写图片描述
* 之后输入密码之后才能够登陆
这里写图片描述

  • 添加密码文件,免密码登陆
[root@server60 mysql]# vim ~/.my.cnf
[client]
[client]
user = root
password = westos
host = localhost
[root@server60 mysql]# ll ~/.my.cnf
--w------- 1 root root 58 05-06 04:35 /root/.my.cnf
  • 关于数据目录的表文件
[root@server60 mysql]# pwd
/mysql/mydata/mysql
  • 对于MyISAM:
    • 其中db.frm:表示RG_MYISAM的表结构定义;
    • event.MYD:表示表数据文件定义;
    • event.MYI:表示索引文件;
  • 对于InnoDB:
    • 支持所有表共享一个表空间文件,但是这种方式不支持很多高级特性,建议每表一个独立的 表空间文件,使用innodb_file_per_table
  • 更改配置文件添加这个选项
[root@server60 mysql]# vim /etc/my.cnf 
innodb_file_per_table = 1  //添加在[mysqld]开头的一行;
  • 更改配置文件之后,使用service mysqld reload,服务器变量并没有生效,所以还是建议使用
[root@server60 mysql]# /etc/init.d/mysqld start
查看服务器变量关于
mysql> show GLOBAL VARIABLES LIKE '%innodb%';
 innodb_file_per_table           | ON   
  • 对于MySQL的服务器变量的生效时机都是存在区别的,大约一共有600个变量,其中300个服务器变量,300个会话变量;

  • 使用InnoDB存储引擎创建表,并且查看使用每表一个表空间文件生成的文件,并且解释含义

mysql> CREATE DATABASE dbdata;
Query OK, 1 row affected (2.39 sec)
mysql> use dbdata;
Database changed
mysql> REHASH;
mysql> CREATE TABLE dbdata(
    -> id INT NOT NULL,
    -> name CHAR(30));
Query OK, 0 rows affected (0.25 sec)
  • 接下来查看dbdata里面生成的文件内容
    这里写图片描述
  • 解释这三个文件的含义:
    • dbdata.frm:表示表结构定义文件;
    • dbdata.ibd:表示表空间(表数据和索引文件),只有打开了每表一个表空间,对于每个表都存在独立的这个文件,否则就只有一个表空间文件用于共享;
    • db.opt:使用的字符集和和排序规则,查看一下这个文件的内容
[root@server60 dbdata]# file db.opt 
db.opt: ASCII text

这里写图片描述

MySQL客户端命令的使用

  • mysql:

    • --user -u:用于指定连接的用户;
    • --host -h:用于指定连接的主机;
    • --password -p:用于指定连接的密码;
    • --port:用于指定连接的端口;
    • --protocol:用于指定连接的协议;
    • --databases DATABASES -D:用于指定某个数据库,然后进行连接,并且直接进入数据库;
      这里写图片描述
  • MySQL的交互式命令:

  • 客户端命令:
    • clear (\c):用于提前终止指令执行;
    • connect (\r):用于重新连接到MySQL服务器上面;
    • go (\g):用于将语句发送到server段进行执行;
    • ego (\G):用于将语句发送到服务器段执行,并且结果使用竖排方式进行显示;
    • exit (\q):Exit mysql. Same as quit.;
    • print (\p):Print current command.;
    • system (\!):Execute a system shell command.;
    • warnings (\W):Show warnings after every statement.;
    • nowarning (\w):Don't show warnings after every statement.;
  • MySQL 的提示符号;
    • mysql >:表示语句正常输入;
    • ->:表示语句没有结束,可以正常输入
    • '>:表示缺少单引号的后半部分;
    • ">:表示缺少双引号的后半部分;
    • `>:表示缺反引号的后一半;
    • /*>:表示缺多行注释的后一半;
  • 对于MySQL来说支持批处理模式,将SQL语句组成的脚本,例如
CARETE DATABASE newdb;
CREATE TABLE mydb(id INT NOT NULL, name CHAR(30));
  • 使用Mysql提供的客户端命令来进行导入
mysql> \. name.sql
  • 使用重定向的方式来进行脚本执行
[root@server60 dbdata]# mysql --uroot -p < name.sql
  • 对于MySQL本地执行的命令是不需要使用;来进行结束的,但是对于需要发送到server执行的命令必须使用;来表示语句的结束符号;语句结束符号可以通过delimiter (\d) Set statement delimiter.用来自定义语句结束符号

  • MySQL的其他选项

  • --compress:表示语句先压缩在发送,用于节约带宽;
  • -ssl-ca=/path/to/ssl_ca_file:表示CA文件的位置;
  • --ssl-capath=/path/to/ca_dir:表示CA目录的位置;
  • --ssl-cert=/path/tocert_file:表示自己的证书位置;
  • --ssl-cipher-cipher_list:表示加密算法列表;
  • --ssl-key=/path/to/key_file:表示自己的秘钥文件;
  • --ssl-verify-server-cert:表示是否验证服务器段证书;
  • MySQL的使用技巧
  • 名称补全:
    • 这个功能需要将,库,命令进行遍历,并且载入内存后,才能够实现补全功能,禁用使用 -A --no-auto-rehash --disable-auto-rehash,启用使用 \# 或者 rehash; 表示可以实现对象的名称补全;
  • MySQL的输出格式:--html ,用于将输出指定为html格式,-xml输出格式为xml格式;
  • 获取服务器段命令的使用HELP COMMAND来获取帮助;
  • 其他的命令
  • mysqladmin
  • create命令:
    这里写图片描述
  • drop
    这里写图片描述
  • ping:用于查看服务器是否在线
    这里写图片描述
    这里写图片描述
  • processlist:用于查看服务器的进程列表
    这里写图片描述
  • status:用于查看服务器的状态信息
    这里写图片描述
  • 按照批的方式进行显示--sleep --count
    这里写图片描述
    • 上图表示每两秒钟显示一次,一共显示四次;
    • extended-status:用于显示服务器的扩展状态
      这里写图片描述
    • variables:用于显示服务器变量
      这里写图片描述
    • flush-privileges:用于刷新授权表,等同于reload
      这里写图片描述
    • flush-status:表示重置大多数服务器变量,这个轻易不要使用;
    • flush-tables:关闭已经打开的表的句柄;
    • flush-threads:重置线程缓存;
    • flush-logs:进行日志滚动;
    • flush-hosts:用于解决用于过多的连接尝试导致的无法登录;
    • refresh:关闭所有打开的表,并且滚动日志,相当于同时执行flush-hostsflush-logs;
    • shutdown:用于关闭MySQL服务器进程;
    • version:服务器版本以及当前状态信息;
      这里写图片描述
    • start-slave:启动复制,启动从服务器的复制线程,包括两个线程SQL_thread以及IO_thread;
    • stop-slave:关闭复制功能;
    • 关于mysqladmin管理数据库时,必须是指定用户以及密码等验证信息;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值