我们这里安装mysql-5.5的版本,要想源码安装mysql,首先要编译安装cmake,编译安装cmake的时候要安装make,所以要先安装开发环境在安装cmake,然后再安装mysql。
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。
一、安装开发环境
我们这里用挂载光盘来安装yum库,进而安装开发环境,需要安装Development Libraries和Development Tools,但是DevelopmentTools默认都安装过了,所以我们这里安装一个就行了。安装完成后开发环境就安装成功了。
[[email protected] ~]# mkdir /mnt/cdrom ###创建cdrom目录 [[email protected] ~]# mount /dev/cdrom /mnt/cdrom ###挂载光盘(当场有效,开机无效) [[email protected] ~]# vim /etc/fstab ###在配置文件中挂载光盘(当场无效,开机有效) /dev/cdrom /mnt/cdrom ext3 defaults 0 0 [[email protected] ~]# cd /etc/yum.repos.d/ ###进入yum.repos.d目录下面 [[email protected] yum.repos.d]# vim server.repo ###编辑server.repo [base] name=Server baseurl=file:///mnt/cdrom/Server enabled=1 gpgcheck=0 [[email protected] yum.repos.d]# yum groupinstall "Development Libraries"
二、安装cmake
我们这里下载cmake-2.8.8.tar.gz和 mysql-5.5.28.tar.gz这两个软件包,下面我们先去解压cmake-2.8.8.tar.gz,解压完成后,我们必要要将时间同步一下,时间不同步的话是会出错误的。下面我们就开始编译cmake。
[[email protected] ~]# tar xf cmake-2.8.8.tar.gz [[email protected] ~]# hwclock -s [[email protected] ~]# cd cmake-2.8.8 [[email protected] cmake-2.8.8]# ./configure [[email protected] cmake-2.8.8]# make && make install
三、准备数据目录
我们这里要为我们编译的mysql准备好数据目录,并且还要创建用户创建组。我们先创建一个逻辑卷来存放我们的mysql,我们这里创建一个新分区,然后给他的类型是8e,然后保存退出,退出后我们就可以创建逻辑分区了,要创建逻辑分区首先要创建物理分区,然后创建卷组,最后逻辑分区。创建完成后我们就要格式化这个分区。
[[email protected] ~]# fdisk /dev/sda [[email protected] ~]# partprobe /dev/sda [[email protected] ~]# pvcreate /dev/sda5 [[email protected] ~]# vgcreate myvg /dev/sda5 [[email protected] ~]# lvcreate -L 10G -n mydata myvg [[email protected] ~]# mke2fs -j /dev/myvg/mydata
然后我们把它挂在到/mydata下面,我们这里直接编辑文件,然后用mount –a 就可以直接挂在上来了。如果你不是很确定的话你可以查看一下mount。我们在/mydata下面创建一个目录data,然后查看一下/mydata。Data是我们创建的标志,而lost+found说明挂在成功了。然后我们就创建组和用户,我们还要更改权限,属主属组都改为mysql。
[[email protected] ~]# mkdir /mydata [[email protected] ~]# vim /etc/fstab /dev/myvg/mydata /mydata ext3 defaults 0 0 [[email protected] ~]# mount -a [[email protected] ~]# mkdir /mydata/data [[email protected] ~]# ls /mydata data lost+found [[email protected] ~]# groupadd -r mysql [[email protected] ~]# useradd -r -g mysql -s /sbin/nologin mysql [[email protected] ~]# chown –R mysql.mysql /mydata/data
我们这里查看一下它的二进制程序在什么地方,我们再看一下是否在我们的环境变量中不在,我们可以查看一下。发现在环境变量中,可以直接用。
[[email protected] ~]# which cmake /usr/local/bin/cmake [[email protected] ~]# echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
四、编译安装mysql-5.5.28
使用cmake编译mysql-5.5.28,cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure cmake .
./configure--help cmake . -LH or ccmake .
我们这里先解压mysql,解压完成之后我们就可以使用cmake编译mysql-5.5.28,cmake . –LH 它可以尝试读取你的配置文件,它会找一下开发时的头文件和开发环境,最后会把我们的配置选项输出出来的。下面我们就可以执行make和make install
[[email protected] ~]# tar xf mysql-5.5.28.tar.gz ###解压mysql [[email protected] ~]# cd mysql-5.5.28 [[email protected] mysql-5.5.28]# cmake . –LH ###获取帮助 [[email protected] mysql-5.5.28]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/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 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci [[email protected] mysql-5.5.28]# make && make install
重点解释:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\ ###mysql安装路径
-DMYSQL_DATADIR=/mydata/data\
-DSYSCONFDIR=/etc\ ###配置文件目录
-DWITH_INNOBASE_STORAGE_ENGINE=1\ ###是否包含innobase存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1\ ###是否包含archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\ ###是否包含blackhole存储引擎
五、配置mysql
我们首先切换到mysql下面,然后看到mysql的属主属组全是root,我们要先修改权限,然后进行初始化,初始化完成后我们就将support-files/my-large.cnf复制到etc/下,并命名为mysql.cnf。还要将support-files下面的文件复制到etc/init.d下并命名为mysqld。然后将它加到列表中去,让它开机自动启动。我们查看一下发现2345全是on的,这时候我们就可以重启的服务器了。为了能够直接使用客户端命令我们这个时候就可以将它加入到环境变量中去(红色为编辑的内容)。为了让它生效我们需要执行一下这个脚本。如果不确定我们可以echo $PATH一下。
[[email protected] mysql-5.5.28]# cd /usr/local/mysql [[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data [[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf ###样例配置文件 [[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld [[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld [[email protected] mysql]# chkconfig --add mysqld [[email protected] mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [[email protected] mysql]# service mysqld start [[email protected] mysql]# vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin
这里我们使用show databases;可以查看数据库,使用show engines查看存储引擎。从图中我们看到innoDB是默认的存储引擎。我们这里需要注意的是,我们需要在/etc/mysql.con里面加入datadir=/mydata/data。由于我们编译的时候默认指向/mydata/data了,所以没有出错。如果我们使用通用二进制的话,这里不指定的话,就会出错的.
[[email protected] mysql]# vim /etc/mysql.cnf datadir=/mydata/data
六、删除用户及给用户创建密码
我们先查看用户都有哪些,然后我们就以删除匿名用户为例,给大家做个示范,删除匿名用户但是主机名为localhost。下面我们把用户名为root的用户密码全改为’redhat’。
mysql> USE mysql; mysql> SELECT User,Host,Password FROM user;
mysql> DROP USER ''@'localhost'; mysql> SELECT User,Host,Password FROM user;
下面我们把用户名为root的用户密码全改为’redhat’。修改密码的方式有三种,格式如下,我们还需要写入生效命令(FLUSHPRIVILEGES)。然后我们推出重进
MySQL用户密码修改:
1、#mysqladmin -u USERNAME -h HOSTNAME password ‘NEW_PASS’ -p
2、mysql> SET PASSWORD FOR 'USERNAME‘@’HOST'=PASSWORD(‘new_pass');
3、mysql>UPDATE mysql.user SET PASSWORD=PASSWORD('new_pass') WHERECONDITION;
例如:
mysql> UPDATE user SETPassword=PASSWORD('redhat') WHERE user='root';
mysql> FLUSH PRIVILEGES;
如果我们想不用输入用户和密码可以直接登录进来。然后我们编辑.my.cnf,这是个隐藏的文件夹。我们运行mysql,它会直接读取这个配置文件(.mysql.cnf这个信息的)。
[[email protected] ~]# vim .my.cnf [client] user=root password=redhat host=localhost
七、扩展
Mysql的著名的核心引擎有两个,分别是MyISAM和InnoDB。
MyISAM:(每表三个文件)
.frm:表结构
.MYD:表数据
.MYI:表索引
InnoDB:所有表共享一个表空间文件【建议:每表一个独立的表空间文件】
.frm:表结构
.ibd:表空间(表数据和索引)
转载于:https://blog.51cto.com/lzysg172/1196734