MySQL简介与安装

MySQL简介与安装

1. MySQL简介

1.1 MySQL发展史

1979年,报表工具Unireg出现。
1985 年,以瑞典David Axmark 为首,成立了一家公司(AB前身),IASM引擎出现。
1990年,提供SQL支持。
1999-2000年,MySQL AB公司成立,并公布源码,开源化。
2000年4月BDB引擎出现,支持事务。
2008年1月16号 MySQL被Sun公司收购。
2009年04月20日Oracle收购Sun公司,MySQL 转入Oracle 门下。

现在,越来越多的公司开始使用MySQL:

1.2 MySQL特点

开源
社区版免费
简单,使用方便,可靠
稳定、安全
社区活跃

1.3 MySQL产品线

1) 3.26--5.2版本
    正宗后代
    Centos5、6中默认有5.1版本
    Centos7中默认是MariaDB
    5.4--5.7 ,8.0版本
    借鉴社区好的贡献,进一步开发的版本
    主流版本:5.5 5.6 5.7
    讲课版本5.6最新版

2) MySQL Cluster 6.0 版本&更高
    类似于Oracle RAC,硬件要求高。
    一般各大网站没有人用

3) 版本选择

    5.6:选择GA版(General Availability),GA版发布6个月-1年以上的版本,最好是个双数版本比如:5.6.36 、5.6.38 、5.6.34

    5.7:5.7.17以后的GA版,且发行6个月以上比如:5.7.18 、5.7.20

4) 面试时可能会问到的关于MySQL版本的问题
    问:你公司用mysql吗
    答:yes
    问:公司用什么版本
    答:5.6.36
    问:为什么要用这个版本?
    答:行业里面有一个规范,选择主流的5.6 5.7 GA 6个月以上的版本。我们公司选择这个版本是基于公司业务特点来决定的。另外因为开发阶段用的版本也是5.6的。为了保持版本一致。

2. MySQL安装

2.1 MySQL安装方式

1) RPM、Yum:安装方便、安装速度快,无法定制
2) 二进制:不需要安装,解压即可使用,不能定制功能
3) 编译安装:可定制,安装慢。
    5.5之前:./configure make make install
    5.5之后:cmake gmake
4) 先编译,然后制作rpm,制作yum库,然后yum安装。
    简单、速度快、可定制,比较复杂 制作时间长
5) 企业选择安装方式
    中小企业:以上方式都可以,运维偏向编译,dba偏向选择二进制。
    大型企业:可以选择4

 

2.2 编译安装MySQL(5.6.36)

2.2.1 环境准备

1) 克隆一个模板机器(使用centos6),克隆完做快照
2) IP 10.0.0.52 主机名db02
3) iptables selinux
4) 下载好5.6.36
5) 安装依赖包

yum install -y ncurses-devel libaio-devel

6) 安装cmake

yum install cmake –y

7) 创建用户

useradd -s /sbin/nologin -M mysql
id mysql

2.2.2 配置并编译

1) 上传或下载压缩包并解压缩

mkdir /server/tools
cd /server/tools
ls -l mysql-5.6.36.tar.gz

tar xf mysql-5.6.36.tar.gz
cd mysql-5.6.36

我在实际操作中,发现还有两个目录需要创建/application/mysql-5.6.36 /application/mysql-5.6.36/tmp/

2) 进行配置

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 \
-DMYSQL_DATADIR=/application/mysql-5.6.36/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

PS1:重要配置项解释

配置预设置的数据库必要参数
-DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 ---安装路径
-DMYSQL_DATADIR=/application/mysql-5.6.36/data ---数据库存放数据
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock ---数据库套接字文件位置

PS2:硬编码程序,将以上配置直接加入到mysql程序中
mysqld_safe
mysqld
mysql
mysqldump
mysqladmin

PS3:源码包安装方式和cmake有所不同:

源码包方式安装前的预配置
./configure --prefix --with --enable --disable (cmake)
作用:告诉后续make(编译)的时候都要开启或者关闭软件的哪些功能

3) 编译

make && make install

make:将c的源代码编译成计算机能够识别的格式(二进制)。

make install:将编译好的程序文件拷贝到指定安装目录,修改权限。

4) 创建软链接

ln -s /application/mysql-5.6.36/ /application/mysql

5) 复制配置文件

cp support-files/my*.cnf /etc/my.cnf

6) 初始化数据库

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql

NOTE:初始化数据库(建库),初始化的是mysql基本运行所必须的一些“系统库”(元数据)。

7) 设置属主和属组

chown -R mysql.mysql /application/mysql/

8) 将MySQL启动停止重启的脚本添加到init.d文件下,并更名为mysqld

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

9) 设置MySQL服务脚本的权限为700

chmod 700 /etc/init.d/mysqld

10) 配置MySQL服务为开机自启动(可以根据实际需要,选择是否开机自启动)

chkconfig mysqld on
chkconfig --list mysqld

11) 启动MySQL

/etc/init.d/mysqld start

12) 查看MySQL是否已经启动成功

netstat -lntup|grep 3306

13) 添加环境变量,并运行source使环境变量立即生效

echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile

source /etc/profile
echo $PATH

14) 安装完成运行MySQL

mysql

15) 设置MySQL数据库root管理员帐号的初始密码

mysqladmin -uroot -p password 'oldboy123'

mysql
-uroot -poldboy123

16) 查询数据库中已有用户,删除掉没用的用户和没用的数据库

select user,host from mysql.user;

drop user ''@'db01';
drop user ''@'localhost';
drop user 'root'@'db01';
drop user 'root'@'::1';
drop user 'root'@'127.0.0.1';

select user,host,password from mysql.user;

drop database test;
show databases;

 17) 查看错误日志

tail -100 /application/mysql/data/db02.err 

3. MySQL忘记root密码如何操作

3.1 MySQL5.6

1) 停数据库

/etc/init.d/mysqld stop

2) 以“安全模式”登录数据库,--skip-grant-tables --skip-networking

/application/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking &

3) 修改密码

update mysql.user set password=PASSWORD('110') where user='root' and host='localhost';

select user,host,password from mysql.user;

4) 关闭数据库,并正常启动数据库,暂时使用pkill杀掉mysqld进程,后面再介绍其它方法

pkill mysqld
/etc/init.d/mysqld start

3.2 MySQL5.7

5.7中不再使用password字段进行存储密码,使用authentication_string来替代,修改命令如下:

update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';

猜你喜欢

转载自www.cnblogs.com/oldpan/p/9013361.html