为什么选择mysql

  1. mysql 性能卓越,服务稳定,很少出现异常宕机
  2. mysql 开源免费,无版权制约,自主性及使用成本低
  3. 产品耦合度, mysql 支持多种操作系统,支持多开发语言,特别是 php
  4. 技术积累,庞大的活跃的社区,
  5. 软件体积小,安装简单,易于维护

MYSQL 数据库分类与版本升级

  

1. 社区版和企业版的区别

1) 首先价格上,社区版完全免费,企业版需要高额的费用
2) 技术上,企业版具有 MySQL 企业级服务器、 MySQL 企业级系统监控工具。企业版经过严格的测试认证,相对企业版,社区版的开发测试环境没有那么严格
3)服务方面,社区版 mysql 官方不提供任何技术支持,使用过程出现任何意外不负任何责任,企业版与之相反
4)商业版不支持 GPL 协议

2. MYSQL 产 品 路 线

三条产品线
1) 5.0.XX 到 5.1.XX 产品系列
这条产品线继续完善改进用户体验和性能,同时增加新功能,是 mysql 早期产品的延续,如 rhel6 自带的 mysql
2) 5.4.XX 开始到 5.7.XX 产品系列
mysql 社区和第三方公司 percona 整合的,吸收新的算法和存储引擎,现在已经到了5.6.26
3) 6.0.XX 到 7.X.XX 产品系列
主要是为了更好的推广 MySQL Cluster 版本,提供 Cluster 版本的性能和稳定性,这个版本比较少公司用原因是出来太晚了。

MYSQL 安 装

生 产 环 境 怎 么 选 择 MYSQL 版 本
1:选择稳定版 选择社区的 GA 版
2:产品线,主要是 5.1 和 5.5 ,多数 5.5
3:选择 MySQL GA 版发布 6 个月以上的版本
4:最好向后较长时间没有更新发布的版本
5:与开发人员使用版本的兼容
6:测试环境跑 3-6 个月
7:到生产环境非核心业务跑几个月

MYSQL 安装方法

1:使用二进制方式安装, rpm/yum
2 : 源码编译,产品线路 1 用普通编译安装,线路 2 用 cmake 编译安装 5.5/6/7
3:批量部署, src.rpm 通过 spec 文件
源码编译可以按照自己的需要对mysql进行针对性配置,更加适合生产环境下使用,因此本节使用源码编译的方式安装mysql,操作系统版本为Centos7.2,mysql版本为5.5.32。

源码编译安装 MYSQL5.5.32

如果是 mysql5.1 系列的直接使用编译安装,不用 cmake
1)安装 cmake 编译工具
yum install cmake -y

2)下载 MySQL

3)安装依赖
用于终端操作的开发包
yum install ncurses-devel –y

4)添加用户mysql
useradd -u 8001 -s /sbin/nologin mysql

5)创建数据库存放目录
mkdir /data/

6)编译安装:
a)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -
DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -
DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -
DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -
DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -
DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data -DMYSQL_USER=mysql

参数说明:
-DCMAKE_INSTALL_PREFIX             数据文件存放目录
-DMYSQL_UNIX_ADDR                  sock 文件路径
-DDEFAULT_CHARSET                  默认字符集
-DDEFAULT_COLLATION                默认字符校对
-DWITH_EXTRA_CHARSETS             扩展字符支持 默认 all
-DWITH_storage_STORAGE_ENGINE     存储引擎的支持,默认支持
MyISAM,MERGE,MEMORY,CVS          存储引擎
-DENABLED_LOCAL_INFILE=1           启用加载本地数据
-DMYSQL_DATADIR                    数据存放目录
-DMYSQL_USER mysql                  运行用户

扩展:
-DWITH_PARTITION_STORAGE_ENGINE=1 支持分区表
-DINSTALL_LIBDIR=dir_name
-DSYSCONFDIR=dir_name The default my.cnf option file directory

b) make -j 4           #4线程编译
c) make install -j 4     #安装

7)授权用户
chown -R mysql:mysql /usr/local/mysql/
chown –R mysql:mysql /data
chmod 1777 /tmp

8)创建配置文件
cp support-files/my-large.cnf /etc/my.cnf

9)设置环境变量
echo ‘export PATH=/usr/local/mysql/bin:PATH′>>/etc/profilesource!
source /etc/profile

10)创建服务启动脚本,添加开机启动
cp support-files/mysql.server /etc/init.d/mysqld
给脚本添加执行权限:
chmod +x /etc/init.d/mysqld
服务启动脚本要修改以下两个参数:
vim /etc/init.d/mysqld
basedir=/usr/local/mysql #MySQL 安装目录
datadir= /data #数据存放目录
添加开机启动:
chkconfig mysqld on

11)初始化数据库
chmod +x scripts/mysql_install_db
/usr/local/mysql/scripts/mysql_install_db –defaults-file=/etc/my.cnf -
-basedir=/usr/local/mysql –datadir=/data –user=mysql
看到两个 ok 就成功

12)初始化安全配置
mysql_secure_installation 安全初始化配置

13)排错
出现这种错误
Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using
password: YES)
干掉 mysql 进程
pkill mysqld
rm -rf /data/*
重新初始化

13) MySQL 安全优化小配置
用户安全
mysql> select user,host from mysql.user;
mysql> delete from mysql.user where user=”;
mysql> delete from mysql.user where host=’server01.cn’;
mysql> delete from mysql.user where host=’::1’;
mysql> select user,host from mysql.user;
+——+———–+
| user | host |
+——+———–+
| root | 127.0.0.1 |
| root | localhost |
或者把用户都删了,添加一个额外的管理员
mysql> delete from mysql.user;
mysql> grant all privileges on . to system@’localhost’ identified by
‘123456’ with grant option;
mysql> flush privileges;
mysql> select user,host from mysql.user;
+——–+———–+
| user | host |
+——–+———–+| system | localhost |
+——–+———–+
1 row in set (0.00 sec)
mysql> drop database test;

Centos7.x yum安装mysql

Centos7.x已经将mysql的默认版本换成了mariadb,因此使用yum安装mysql时安装的实际是mysql的分支mariadb。
可以从mysql官网直接下载mysql-server进行安装,版本为5.6.36:

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
 rpm -ivh mysql-community-release-el7-5.noarch.rpm
 yum install mysql-community-server

上面的安装已经包含了mysql的客户端。

Centos7.x yum安装mariadb

yum install -y mariadb-server mariadb
systemctl start mariadb