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