yum安装mysql
客户端需安装:mysql包
服务端需安装:mysql-devel、mysql-server包
概述:
CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14。
1.查看是否安装旧版本
使用下面的命令检查是否安装有MySQL Server
#rpm -qa | grep mysql
2.卸载MySQL Server旧版本
#rpm -e mysql//普通删除模式
#rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
3.安装库文件
安装编译代码需要的包
#yum -y install make gcc-c++ bison ncurses-develmysql
4.下载编译安装cmake
cmake-2.8.4.tar.gz,cmake安装包.在可下最新版本
#tar -zxvf cmake-2.8.8.tar.gz
#cd cmake-2.8.8
#./bootstrap
#make
#make install
5.下载编译安装Mysql 5.6版本
下载MySQL 5.6.14
tar xvf mysql-5.6.14.tar.gz
cd mysql-5.6.14
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
make && make install
6.配置MySQL
设置权限
使用下面的命令查看是否有mysql用户及用户组
cat /etc/passwd//查看用户列表
cat /etc/group//查看用户组列表
如果没有就创建
groupadd mysql
useradd -g mysql-s /sbin/nologinmysql
修改权限
chown -R mysql.mysql /usr/local/mysql
chmod 755 /var/lib/mysql #socket文件存放位置
7.初始化mysql数据库
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
#cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
8.修改my.cnf配置文件
#vi /etc/my.cnf
[mysqld]
# These are commonly set, remove the # and set as required.
basedir=/usr/local/mysql//安装时定义的安装目录
datadir=/usr/local/mysql/data//安装时定义的数据存放目录
port=3306//安装时定义的监听端口
#server_id = .....
socket=/var/lib/mysql/mysql.sock//注意此目录权限问题
9.添加mysql自启动
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqldon
service mysqldstart
10.配置环境变量
MySQL启动成功后,root默认没有密码,我们需要设置root密码。
设置之前,我们需要先设置PATH,使之直接调用mysql
修改/etc/profile文件,在文件末尾添加
#vi /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH
关闭文件,运行下面的命令,让配置立即生效
#source /etc/profile
现在,我们可以在终端内直接输入mysql进入,mysql的环境了
执行下面的命令修改root密码
#mysql -uroot
mysql> SET PASSWORD =password('123456');
11.配置防火墙
防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
打开/etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
service iptables restart
OK,配置完成。
12.各种报错
Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
日志文件报错:
2014-12-01 16:30:15 2963 [ERROR] Can't start server : Bind on unix socket: Permission denied
2014-12-01 16:30:15 2963 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
2014-12-01 16:30:15 2963 [ERROR] Aborting
根据日志文件显示,首先检查运行权限,再看一下/var/mysql.sock,发现/var/mysql.sock目录下并没有该文件,是否是没有权限 写/var目录?,到这里,基本清楚了Mysql客户端和服务器端在本机的通信方式了,通过一个名为mysql.sock文件来进行初始化通信的,因此该文件所存放的目录必须双方都有权限可以访问到,而且服务器在启动时需要写该文件,如果my.cnf中这两项配置不正确,就 会出现Permission denied等类似错误。
修改socket文件的权限
chmod 755/var/lib/mysql
若在启动mysql服务时出现如下错误,可查看错误日志找出错误原因。
Error:Starting MySQL.The server quit without updating PID file (/data/mysql/failed184_sles10.pid).
Error:
130730 10:15:37 [ERROR] COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
130730 10:15:37 [ERROR] Aborting
若错误日志中出现如上错误,则是在编译的时候字符集与校对集没有对应。校对集时utf8_general_ci,而字符集是latin1。
解决方法:在配置文件my.cnf中的[mysqld]下面加上-DDEFAULT_CHARSET=utf8;-DDEFAULT_COLLATION=utf8_general_ci这两条语句。“utf8”和“utf8_general_ci ”可改成相应的字符集合校对集。修改完后看能否启动成功,若是出现同样的问题,那没办法只能从头编译再装了。
Error:
130730 14:46:20 [ERROR] Plugin 'InnoDB' init function returned error.
130730 14:46:20 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130730 14:46:20 [ERROR] Unknown/unsupported storage engine: InnoDB
130730 14:46:20 [ERROR] Aborting
出现如上错误可能是innodb在启动时出了问题。
解决方法:在配置文件里面写上[mysqld] skip-innodb或者在data目录下将文件ib_logfile0、ib_logfile1删除即可
CMake Error: The source directory "/data/cheriegong" does not appear to contain CMakeLists.txt.
若编译时出现以上错误,需要把预编译里面的MYSQL_USER去掉,即可预编译成功!
5.6的my.cnf配置文件
二进制日志与data分开放置,sock文件放在/var/lib/mysql下。
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
log-bin=/binlog/mysql-bin
binlog_format=mixed
user=mysql
innodb_file_per_table=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid