MySQL介绍与安装

(1)、MySQL数据库介绍

2个祖师爷   大卫。艾克马克    另一个是迈克尔.维德纽斯   

1996年初发布mysql1.0

新的版本5.6,稳定的是5.6.1-5.6.2   

MySQL(发音为"myess cue el",不是"mysequel")是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

为什么选择MySQL

  1:mysql性能卓越,服务稳定,很少出现异常宕机

  2:mysql开源免费,无版权制约,自主性及使用成本低

  3:产品耦合度,mysql支持多种操作系统,支持多开发语言,特别是php

  4:技术积累,庞大的活跃的社区,

  5:软件体积小,安装简单,易于维护

mysql业务场

1.电商,淘宝,京东,一号店,苏宁

2.游戏,比如网易

3.教育行业

4.百货:一号店

5.知识库,电信

6.通讯行业

除了对数据库一致性要求非常高的100%行业之外,所有的场景都适合。

MySQL数据库分类与版本升级

  MySQL官网http://www.mysql.com/,MySQL版本采用双授权政策,和大多数开源产品路线一样,分为社区版和商业版,并且这两个版本又分别分成四个版本依次发布,Alpha版、Beta版、RC版和GA版

  GA版即为正式版

拓展:

Alpha:['ælfə]是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。

Beta:美 ['bi:tə]也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。

RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。

GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的。

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

    1)首先价格上,社区版完全免费,企业版需要高额的费用

    2)技术上,企业版具有MySQL企业级服务器、MySQL企业级系统监控工具。企业版经过严格的测试认证,相对企业版,社区版的开发测试环境没有那么严格

    3)服务方面,社区版mysql官方不提供任何技术支持,使用过程出现任何意外不负任何责任,企业版与之相反

    4)商业版不支持GPL协议

拓展:

1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。

2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。

3. MySQL Cluster 集群版,开源免费。可将几个MySQLServer封装成一个Server。

4. MySQL Cluster CGE 高级集群版,需付费。

5. MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。

MySQL Community Server 是开源免费的,这也是我们通常用的MySQL的版本

  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产品系列

      主要是为了更好的推广MySQLCluster版本,提供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文件  

源码编译安装mysql5.5.32

如果是mysql5.1系列的直接使用编译安装,不用cmake

1)安装cmake编译工具

    yum install cmake -y

  2)下载MySQL

wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.5/mysql-5.5.32.tar.gz

拓展:为啥会报错,如何查找正确的版本号

报错:  需要改成5.5.53

  3)安装依赖

    yum install ncurses-devel –y    用于终端操作的开发包 

  4)添加用户

useradd -u 8001 -s /sbin/nologin mysql

  5)创建数据库存放目录并解压

       mkdir /data

解压:

[root@abao ~]# ls

mysql-5.5.53.tar.gz

[root@abao ~]# tar xf mysql-5.5.53.tar.gz 

[root@abao ~]# cd mysql-5.5.53

[root@abaomysql-5.5.53]# pwd

/root/mysql-5.5.53

[root@abaomysql-5.5.53]#

yum install gcc-c++

  6)编译安装

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


容易出现的报错:

-- MySQL 5.5.53

-- Packaging as: mysql-5.5.53-Linux-x86_64

-- Could NOT find Threads  (missing: Threads_FOUND)

-- Could NOT find Threads  (missing: Threads_FOUND)

-- Check if the system is big endian

-- Searching 16 bit integer

CMake Error at/usr/share/cmake/Modules/TestBigEndian.cmake:31 (MESSAGE):

  no suitable type found

CallStack (most recent call first):

  configure.cmake:523 (TEST_BIG_ENDIAN)

  CMakeLists.txt:350 (INCLUDE)

解决办法:[root@abaomysql-5.5.53]# rm -rf CMakeCache.txt

参数说明:

-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


make -j 4 && make install   -j 4 是指使用4个cpu核心数,如我们的双核四线程,就可以写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 'exportPATH=/usr/local/mysql/bin:$PATH' >>/etc/profile

    source !$

 10)创建服务启动脚本,添加开机启动

    cp support-files/mysql.server/etc/init.d/mysqld

    chmod +x /etc/init.d/mysqld  给脚本添加执行权限

    vi /etc/init.d/mysqld  服务启动脚本要修改以下两个参数

    basedir=/usr/local/mysql  MySQL安装目录

    datadir= /data   数据存放目录

    chkconfig mysqld on  添加开机启动

 11)初始化数据库

     [root@CentOS-Server mysql]cd /usr/local/mysql/

    [root@CentOS-Server mysql]# 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服务:service mysqld start

    mysql_secure_installation  安全初始化配置

13)排错

    出现这种错误

    Enter currentpassword for root (enter for none):

    ERROR1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    干掉mysql进程

    pkill mysqld

    rm -rf /data/*

重新初始化

提示:

Remove anonymous users? [Y/n] Y

...Success!

Disallow root login remotely? [Y/n] Y   

...Success!

Remove test database and access to it?[Y/n] Y

-Dropping test database...

...Success!

-Removing privileges on test database...

...Success!

Reload privilege tables now? [Y/n] y

...Success!

Cleaning up...

13)MySQL安全优化小配置

    用户安全

    mysql> select user,host from mysql.user;

    mysql> delete from mysql.user whereuser='';

    mysql> delete from mysql.user wherehost='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 *.* tosystem@'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;

本文 暂无 评论

回复给

Top