linux mysql5.5 编译安装

介绍在linux 系统下,使用源代码编译安装mysql,本次实验使用 mysql 5.5 的环境,讲解在 在linux系统下的安装,以及基本的配置

mysql 是一款开源,免费的关系型数据库软件,使用它的优点,我们自然不用多说。

他的安装方式,有两种,一种是使用二进制包,也就是 rpm 包和 deb 包,可以使用 yum 或者 apt-get 来安装,另外一种就是使用源代码编译安装的方式,本次讲解一下源码编译安装 mysql 。

本次环境:系统使用 linux CentOS 6.7 , mysql 版本为 mysql-5.5.42

使用源代码编译安装,那么肯定需要开发环境,比如说 gcc 编译器,这些开发环境,可以使用 yum 来安装,或者 apt-get

yum -y install gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel cmake make

若是 ubuntu 或者 debian 等系统,可以使用 apt-get 来安装,命令如下:

apt-get update
apt-get -y install gcc g++ openssl libncurses5 libncurses5-dev make cmake

下载mysql ,本文提供一个链接,地址在下方,这个地址是我在七牛云上面上传的,大家可以放心下载。版本为 mysql-5.5.42,也可以官网或者在其它地方下载。

wget -c http://ocwljlzzv.bkt.clouddn.com/soft/mysql-5.5.42.tar.gz

下载完成后,解压,并进入该目录

tar -zxvf mysql-5.5.42.tar.gz
cd mysql-5.5.42

配置一下编译选项,这个类似于 ./configure ,只是在 mysql 5.5 版本以后,都不在使用 ./configure ,而是改为了 cmake 。PREFIX 后面的路径,为mysql 要安装的路径,可以根据自己的实际情况来更改。

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=bundled -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1

如果没有报错,则执行编译。若是有报错,则一般缺少库文件,或是开发环境,装好后,删除 cmake 缓存文件,再重装执行上面的 cmake 命令,即可。没有 error ,执行编译

make

还是一样,没有报错,可以执行 安装,若是报错了,可以在网上查一下报错信息,找对应解决方法,一般都是缺少环境的原因

make install

添加 mysql 用户和组,用户运行 mysql

groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql

复制 mysql 配置文件,到 /etc/ 目录下

cp support-files/my-medium.cnf /etc/my.cnf

使用 vi 或者 vim 编辑器,打开 /etc/my.cnf,并在 [mysqld] 里面添加一行如一行,指定我们的 datadir (skip-external-locking的上一行)

vim /etc/my.cnf
   datadir = /usr/local/mysql/var

启用 innodb ,则把 my.cnf 配置文件里的 innodb 开头的行 的注释,全部去掉,并将 innodb 的两个 home_dir 改为我们的 datadir

vim /etc/my.cnf
   innodb_data_home_dir = /usr/local/mysql/var
   innodb_data_file_path = ibdata1:10M:autoextend
   innodb_log_group_home_dir = /usr/local/mysql/var

   innodb_buffer_pool_size = 16M
   innodb_additional_mem_pool_size = 2M

   innodb_log_file_size = 5M
   innodb_log_buffer_size = 8M
   innodb_flush_log_at_trx_commit = 1
   innodb_lock_wait_timeout = 50

若不想要在默认情况下使用 innodb 引擎,则在 [mysqld] 下添加如下两行: (使用 MyISAM 引擎,或使用其它的,按对应的方法改)。

vim /etc/my.cnf
   default-storage-engine=MyISAM
   loose-skip-innodb

PS:默认的存储引擎,只有有一个,推荐使用 innodb 或者 MyISAM,两者只能启用一个为默认

初始化系统数据库

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql

# 这条命令意思为:指定默认配置文件为 /etc/my.cnf ,指定 basedir 为 /usr/local/mysql,指定 datadir 为 /usr/local/mysql/var,指定运行用户为 mysql 。

更改 mysql 目录的属主及属组,使 mysql 用户对其目录有权限

chown -R mysql.root /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql/.

复制 mysql 启动脚本,到 /etc/init.d/ 目录下

cp support-files/mysql.server /etc/init.d/mysql

添加执行权限

chmod +x /etc/init.d/mysql

添加为开机自动启动

chkconfig --add mysql
chkconfig --level 2345 mysql on

PS:ubuntu Debian 等 linux 使用如下命令添加开机自动启动

update-rc.d -f mysql defaults

添加 mysql 库文件到 系统库文件的搜索库

vim /etc/ls.so.conf.d/mysql.conf
   /usr/local/mysql/lib
   /usr/local/lib

更新搜索库

ldconfig

启动 mysql 数据库

/etc/init.d/mysql start

查看进程及端口,看是否启动

[root@localhost mysql-5.5.42]# ps -ef | grep mysql
root 13910 1 0 06:55 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/localhost.localdomain.pid
mysql 14297 13910 0 06:55 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/localhost.localdomain.err --pid-file=/usr/local/mysql/var/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root 14331 1512 0 06:58 pts/0 00:00:00 grep mysql
[root@localhost mysql-5.5.42]#
[root@localhost mysql-5.5.42]# netstat -lnt | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
[root@localhost mysql-5.5.42]#

可以看到 进程有mysql 的相关进程,mysql 的 3306 端口 已经在监听

设置 mysql root 密码 (默认为空)

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

优化一下 mysql 权限表,提高部分安全性

/usr/local/mysql/bin/mysql -u root -p

   use mysql;
   delete from user where password='';
   drop database test;
   flush privileges;

此操作删除密码为空的用户,在使用 mysqladmin 的时候,只设置了 root 并且主机为 localhost 的 root 用户,默认情况还剩余几个主机为空,密码为空的 root 用户。

若是删错的话了,造成了数据库无法使用,无法启动等原因,先停止 mysql 然后删清空 datadir 目录下的所有文件,并重新初始化 系统表,再更改一下属主和属组,然后启动即可。

补充:每次执行 mysql 相关的命令,都要使用绝对路径,否则会提示命令找不到,有点麻烦,可以把 mysql 的 bin 目录,添加到 PATH 变量中,或者做一个软链接,即可解决。

export PATH=$PATH:/usr/local/mysql/bin
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile

 

猜您喜欢
    3条评论