源码编译安装lamp_第2篇(mysql)

准备:
下载编译MySQL5.7.12 时需要的工具,由于从MySQL5.5版本开始弃用了常规的configure编译方法,所以需要下载CMake编译器、Boost库、ncurses库和GNU分析器生成器bison这4种工具。在darkgel的实践中mysql版本为mysql-5.7.12,(boost版本为1.59.0,低于此版本编译不成功)

1.安装工具:
CMake编译工具
yum -y install cmake

Ncurses:提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
yum -y install ncurses-devel

bison:GNU分析器生成器
上网下载 bison-3.0.tar.gz
tar -zxf bison-3.0.tar.gz && cd bison-3.0/ && ./configure
make && make install
cd ~ && rm -rf bison-3.0*

Boost库:一个开源可移植的C++库,是C++标准化进程的开发引擎之一
先卸载系统自带的boost
rpm -qa boost
yum remove boost
上网下载 boost_1_59_0.tar.bz2
tar -jxf boost_1_59_0.tar.bz2 && cd boost_1_59_0/
./bootstrap.sh
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared
cd ~ && rm -rf boost_1_59_0*

2.编译安装mysql:
首先我们先解压Mysql的安装包,建议解压到 /usr/local/src 目录中方便管理
tar zxf mysql-5.7.12.tar.gz
cd mysql-5.7.12
然后我们执行以下指令对源码包进行预处理:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
配置中指定了安装路径、数据库路径、配置文件路径等参数。等配置结束后可以使用 echo $? 查看返回值确定是否配置成功。我在编译时便遇到了一个名为ncurses-devel 的依赖包没有安装,具体信息请阅读错误提示。等我用yum源安装好后发现无法继续cmake了,只好删除后重新解压源码包才配置成功的。好了 一切没问题了就开始 make && make install 吧!
3.
编译安装完成后会生成 /usr/local/mysql 这样一个文件夹,如果选用了直接解压二进制包,就把它解压到 /usr/local 中。我们进入这个文件夹中看看
bin 这个目录存放着mysql的服务器和客户机程序,我们应该添加到环境变量
data 这个文件夹就是数据库目录
include 这里存放着mysql开发用的函数头文件,可以被其他源码包编译时依赖
lib Mysql运行需要的运行库
scripts Mysql初始化数据库的脚本,更改数据库目录后也需要进行初始化
man Mysql是使用手册,需要让man命令识别这个路径才能使用
support-files 其中存放着Mysql的配置文件模板和服务控制脚本等文件

Mysql的配置文件为 /etc/my.cnf ,数据库目录为 /usr/local/mysql/data

4.
接下来就开始部署这些文件,然后让Mysql启动起来吧!首先建立mysql用户和组,并不创建家目录,不允许登陆系统

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

设置mysql安装目录的属主和属组

#mkdir /usr/local/mysql/data
# chown -R mysql:mysql /usr/local/mysql/

给数据库目录可读可写的权限
chmod 777 -R /usr/local/mysql/data/
复制配置文件和服务控制脚本到相应位置

# cp /usr/local/mysql/support-files/my-default.cnf  /etc/my.cnf
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

编辑配置文件 /etc/mysql.cnf,添加:
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
指定安装目录和数据库目录就可以了,其他参数先不用管。
接下来就可以初始化数据库了

# cd /usr/local/mysql/bin
mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

可以用 echo $? 查看返回值
执行完后,可以通过ls -lrt /mydata/mysql/data/命令查看是否生成了MySQL自身的数据库文件。
现在就可以启动Mysql数据库服务了 它的启动命令是 mysqld

# service mysqld start

然后出现大写的 ” SUCCESS “就代表启动成功了,然后用netstat看看它监听的端口吧!

#netstat -anpt | grep mysqld

我们发现它默认监听在 TCP 的”3306”端口

5.初始化MySQL数据库的root用户密码
和Oracle数据库一样,MySQL数据库也默认自带了一个root用户(这个和当前Linux主机上的root用户是完全不搭边的),我们在设置好MySQL数据库的安全配置后初始化root用户的密码。配置过程中,一路输入y就行了。这里只说明下该版本中,用户密码策略分成低级LOW、中等MEDIUM和超强STRONG三种,推荐使用中等MEDIUM级别!

  #cd /usr/local/mysql/bin 
[root@darkgel mysql]# mysql_secure_installation
............省略前面的过程............
Press y|Y for Yes, any other key for No: y   【需要修改密码,所以输入y】

There are three levels of password validation policy:

LOW    Length >= 8     【只需要长度大于或等于8】
MEDIUM Length >= 8, numeric, mixed case, and special characters   【还需要包含数字、大小写和类似于@#%等特殊字符】
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file    【还需要包含字典文件】
............省略剩下的过程............

设置密码之后我们可以用它自带的 mysql 命令连接进去看看
用 -u 指定用户名 -h 指定主机 -p 来输入密码

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

如果出现一个” mysql > “就代表成功了。输入” exit “命令退出。

问题:此时进入 mysql后执行任何命令都会显示一下提示
You must reset your password using ALTER USER statement before executing this statement.
解决:在mysql中依次执行以下命令

SET PASSWORD=PASSWORD('你自己的密码');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

6.
总使用绝对路径来执行mysql命令也不是办法,我们把它的环境变量配置下吧

#echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
# source /etc/profile.d/mysql.sh

好啦,看看是不是能直接执行mysql命令了呢

7.
接下来就分析一下my.cnf这个配置文件的各参数意义
basedir mysql的安装目录
datadir 数据库目录
port 指定服务端口,默认3306 端口
server_idpid文件路径
socket套接字
skip-locking 可避免mysql的外部锁定,降低系统出错几率
skip-name-resolve 禁止mysql对外部连接进行DNS解析,可节约时间
key_buffer_size 设置索引缓存区大小,合理调节这个数值可以获得更好的索引处理性能,过度调大反而降低性能。参数没有可以自己添加
sort_buffer_size设置排序缓存区的大小 (每个连接独占)
read_buffer_size 设置查询操作缓存区的大小 (每个连接独占)
join_buffer_size 设置联合查询操作缓存区的大小 (每个连接独占)
max_connections 设置服务器最大连接进程数

8
这个mysqladmin是Mysql服务器的管理程序,可用于执行检察配置文件、检查服务状态、关闭服务器、创建数据库以及删除数据库等的系统管理操作。其格式如下:
mysqladmin 选项 参数 …
create db_name 创建一个名为db_name的新数据库
debug将debug 信息写入错误日志
drop db_name 删除一个名为db_name的数据库
extended-status 显示服务器状态变量和他们的值
flush-hosts 刷新缓存中的所有信息
flush-logs 刷新所有日志信息
flush-privileges 重新载入授权表
flush-status 清除状态变量
flush-tables 刷新所有的表
flush-threads 刷新线程的缓存
ping 显示服务器运行状态
processlist 正在运行服务器线程的列表
password new_password 更改密码
shutdown 关闭服务器
start-slave 在从服务器上启动同步
stop-slave 在从服务器上关闭同步
-u root 指定用户
-h localhost 指定连接的主机
-p 指定需要输入密码
其中一些概念不懂没关系,先眼熟就行了,在后面的学习中将会慢慢了解

9.
当我们用mysql命令登陆到服务器后,出现的” mysql > “我们应该怎么操作呢?
在 mysql > 提示符下可以使用SQL语言或命令对数据库进行管理,每条SQL语句都以 ” ; ” 结束,且不区分大小写。用户可以通过上下键调出曾经输入过的命令。
对数据库的操作不外乎增删查改,下面就看看一些很简单的命令吧!
show databases; 查看当前存在的数据库
use 数据库名称; 使用指定的数据库
show tables; 查看指定数据库有哪些表
create database 数据库名称; 创建新数据库
drop 数据库名称; 删除数据库

问题(在安装php的过程中可能会遇到):
Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/virtualdarkgel.com.pid).
解决方法
在/etc/my.conf中加
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

其他:mysql开机自动启动

cp /usr/local/src/mysql-5.1.55/support-files/mysql.server /etc/rc.d/init.d/
mv /etc/init.d/mysql.server /etc/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
chkconfig --level 35 mysql on

设置服务开机自启动就是把服务的启动脚本放在/etc/init.d/目录下,这个目录就是系统开机读取的目录,并且设置chkconfig命令,加上服务的开机自启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值