Linux下mysql的三种安装方式(我用的是CentOS6.6,mysql版本是5.6.16)
1、rpm包安装(可能存在依赖问题)
2、yum安装(比较方便)
3、源码包安装(推荐)
以下以源码包安装为例:
相对于5.5版本,MySQL5.6作出了不少改进,其源码安装配置方式也有所变化,安装的具体步骤如下(安装前确保一些基础配置没问题,如网络)。
# 修改防火墙设置,打开3306端口(根据具体情况,也可以关闭防火墙)
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
# 重启防火墙使新设置生效
service iptables restart
# 新增用户组
groupadd mysql
# 新增用户
useradd mysql -g mysql
# 新建数据库执行文件目录
mkdir -p /usr/local/mysql
# 新建数据库数据文件目录
mkdir -p /db/mysql/data
# 编辑PATH搜索路径
vi /etc/profile
在末尾加入下面两行
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
# 生效PATH搜索路径
source /etc/profile
# 安装编译源码所需的工具和库
yum -y install gcc gcc-c++ ncurses-devel cmake make perl
# 进入源码压缩包下载目录
cd /usr/local/src
# 下载源码压缩包,下载包31M大小,csdn上有
http://download.csdn.net/detail/jiaoxiaogu/7156881
# 解压缩源码包
tar -zxvf mysql-5.6.16.tar.gz -C /usr/local
# 进入解压缩源码目录
cd /usr/local/mysql-5.6.16
# 从mysql5.5起,mysql源码安装开始使用cmake了,执行源码编译配置脚本(可以把下面的复制过去)。
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/db/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
# 编译源码,这一步时间会较长,耐心等待。
make
# 安装
make install
# 清除安装临时文件
make clean
# 修改目录拥有者
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /db/mysql/data
# 进入安装路径
cd /usr/local/mysql
# 执行初始化配置脚本,创建系统自带的数据库和表。
scripts/mysql_install_db –user=mysql –datadir=/db/mysql/data
初始化脚本在 /usr/local/mysql/my.cnf 生成了配置文件。需要更改该配置文件的所有者:
chown -R mysql:mysql /usr/local/mysql
需要注意的是:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf”,在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
在CentOS 6.6版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
# 复制服务启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 启动MySQL服务
service mysql start
# 设置开机自启动
chkconfig mysql on
#修改MySQL用户root的密码
mysql -S /usr/local/mysql/mysql.sock
mysql>use mysql;
mysql>update mysql.user set password=password(“123456”) where user=’root’;
mysql>flush privileges;
mysql>exit;
# 可选:运行安全设置脚本,修改MySQL用户root(不是系统的root!)的密码,禁止root远程连接(防止破解密码),移除test数据库和匿名用户,强烈建议生产服务器使用:
/usr/local/mysql/bin/mysql_secure_installation
可能出现的错误:
0、make编译过程中,如出现“警告:提领类型双关的指针将破坏强重叠规则”错误,可以忽略。
1、错误:Could NOT find Curses
先删除掉CMakeCache.txt ,再yum install ncurses-devel即可。
[root@localhost mysql-5.6.16]# rm CMakeCache.txt
2:出现如下错误:
/usr/local/mysql-5.6.16/sql/mysqld.cc: In function ‘void handle_connections_sockets()’:
/usr/local/mysql-5.6.16/sql/mysqld.cc:5131: 错误:从类型 ‘size_socket*’ 到类型 ‘socklen_t*’ 的转换无效
/usr/local/mysql-5.6.16/sql/mysqld.cc:5131: 错误: 初始化实参 3,属于 ‘int accept(int, sockaddr*, socklen_t*)’
/usr/local/mysql-5.6.16/sql/mysqld.cc:5198: 错误:从类型 ‘int*’ 到类型 ‘socklen_t*’ 的转换无效
/usr/local/mysql-5.6.16/sql/mysqld.cc:5198: 错误: 初始化实参 3,属于 ‘int getsockname(int, sockaddr*, socklen_t*)’
make[2]: * [sql/CMakeFiles/sql.dir/mysqld.cc.o] 错误 1
make[1]: * [sql/CMakeFiles/sql.dir/all] 错误 2
make: * [all] 错误 2
可以执行以下操作:
1):清除之前cmake和编译
[root@localhost mysql-5.6.16]# make clean
[root@localhost mysql-5.6.16]# rm CMakeCache.txt
2):删除系统自带MYSQL安装软件(根据你自己系统的实际情况,编译报错后,这一步我没做,貌似也没啥问题,可以先试试1、3)
[root@localhost ~]# rpm -qa | grep mysql
mysql-devel-5.1.66-2.el6_3.x86_64
mysql-5.1.66-2.el6_3.x86_64
mysql-libs-5.1.66-2.el6_3.x86_64
[root@localhost ~]# rpm -e –nodeps –allmatches mysql
[root@localhost ~]# rpm -qa | grep mysql
mysql-devel-5.1.66-2.el6_3.x86_64
mysql-libs-5.1.66-2.el6_3.x86_64
rpm -e –nodeps –allmatches mysql 表示:删除mysql client和server包但不删除他们所关联的包
3):重新cmake和make