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 gmake4) 先编译,然后制作rpm,制作yum库,然后yum安装。 简单、速度快、可定制,比较复杂 制作时间长5) 企业选择安装方式 中小企业:以上方式都可以,运维偏向编译,dba偏向选择二进制。 大型企业:可以选择4
2.2 编译安装MySQL(5.6.36)
2.2.1 环境准备
1) 克隆一个模板机器(使用centos6),克隆完做快照
2) IP 10.0.0.52 主机名db023) iptables selinux4) 下载好5.6.365) 安装依赖包yum install -y ncurses-devel libaio-devel
6) 安装cmake
yum install cmake –y
7) 创建用户
useradd -s /sbin/nologin -M mysqlid mysql
2.2.2 配置并编译
1) 上传或下载压缩包并解压缩
mkdir /server/toolscd /server/toolsls -l mysql-5.6.36.tar.gztar xf mysql-5.6.36.tar.gzcd 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_safemysqldmysqlmysqldumpmysqladminPS3:源码包安装方式和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 onchkconfig --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';