一、查看CentOS是否安装MySQL

# rpm -qa | grep mysql       //查看该操作系统上是否已经安装了mysql数据库

# rpm -e mysql              // 普通删除模式

# rpm -e --nodeps mysql     // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

二、下载MySQL源码包

或者直接用命令行安装

[root@localhost ~]# yum install -y mysql-server mysql mysql-deve

三、安装和编译mysql安装包

(1)安装编译代码所需要的包

[root@localhost mysql-5.6.26]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio

[root@localhost mysql-5.6.26]# yum install libaio libaio-devel -y

[root@localhost mysql-5.6.26]# yum install perl-Data-Dumper -y

[root@localhost mysql-5.6.26]# yum install net-tools -y

(2)解压安装包并编译安装

[root@localhost src]# tar xvf mysql-5.6.26.tar.gz

[root@localhost src]# cd mysql-5.6.26

[root@localhost mysql-5.6.26]# 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

编译成功

[root@localhost mysql-5.6.26]# make && make install

至此,mysql安装完成

检查系统是否已经有mysql用户,如果没有则创建

[root@localhost mysql-5.6.26]# cat /etc/passwd | grep mysql

[root@localhost mysql-5.6.26]# cat /etc/group | grep mysql

创建mysql用户(但是不能使用mysql账号登陆系统)

[root@localhost mysql-5.6.26]# groupadd mysql

[root@localhost mysql-5.6.26]# useradd -g mysql mysql

修改权限

[root@localhost mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql

(3)初始化配置脚本

进入安装路径

[root@localhost mysql-5.6.25]# cd /usr/local/mysql

执行初始化配置脚本,创建系统自带的数据库和表

[root@localhost 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 7版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

(4)设置开机启动

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql

[root@localhost mysql]# chkconfig mysql on

(5)启动MySQL服务

[root@localhost ~]# service mysql start

注:如果启动时报错 “Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).”则重新编译

(6)设置root密码,登录mysql

[root@localhost ~]#  mysql -uroot

mysql> set password for root@localhost=password('root');

mysql> exit;

四、配置MySQL

(1)创建mysql新用户test_user

mysql> create user 'test_user'@'%' identified by 'test_user';

(2)给新用户test_user授权,让他可以从外部登录和本地登录

注意:@左边是用户名,右边是域名、IP和%,表示可以访问mysql的域名和IP,%表示外部任何地址都能访问。

mysql> grant all privileges on *.* to 'test_user'@'localhost' identified by 'test_user';

mysql> grant all privileges on *.* to 'test_user'@'%' identified by 'test_user';

mysql> select user,host,password from mysql.user;

mysql> flush privileges;

(3)查看mysql的默认存储引擎

从下面的执行结果可以看出,mysql的默认引擎是MyISAM,这个引擎是不支持事务的。

mysql> show engines;

也可以以下面的方式查看

mysql> show variables like 'storage_engine';

(4)修改mysql的默认引擎为InnoDB

停止mysql

mysql> exit;

[root@localhost ~]# service mysqld stop

(5)修改 /etc/my.cnf

[mysqld] 后加入  default-storage-engine=InnoDB

加入后my.cnf的内容为:

[root@localhost etc]# more my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

default-storage-engine=InnoDB

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

(6) 重新启动mysql

[root@localhost etc]# service mysqld start

Starting mysqld:  [  OK  ]

(7)修改防火墙,开放操作系统MySQL端口3306

CentOS6.5默认是不开放端口的,如果要让外部的系统访问CentOS6.5上的mysql,必须开放mysql的端口3306

[root@localhost etc]# vi /etc/sysconfig/iptables

添加下面一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

重启防火墙

[root@localhost etc]# service iptables restart

这样就可以从外部访问mysql了。

至此,MySQL在CentOS上的安装全部完成。