第二章:MySQL介绍与安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章:MySQL介绍与安装相关的知识,希望对你有一定的参考价值。

第二章:mysql介绍与安装

为什么选择MySQL

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

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

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

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

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

MySQL数据库分类与版本升级

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

GA版即为正式版

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安装

生产环境怎么选择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

源码编译安装mysql5.5.32

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

[root@localhost ~]# yum install cmake -y

2)下载MySQL

[root@localhost ~]# wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.5/mysql-5.5.53.tar.gz

3)安装依赖

[root@localhost ~]# yum install ncurses-devel –y

4)添加用户

[root@localhost ~]# useradd -u 8001 -s /sbin/nologin mysql

5)编译安装

[[email protected] ~]# 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=/usr/local/mysql/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运行用户
[root@localhost ~]# make -j 4 && make install

6)授权用户

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# chmod 1777 /tmp

7)创建配置文件

[[email protected] ~]# cp support-files/my-large.cnf /etc/my.cnf

8)设置环境变量

[root@localhost ~]# echo ‘export PATH=/usr/local/mysql/bin:$PATH‘ >>/etc/profile
[root@localhost ~]# source !$

10)初始化数据库

[root@localhost ~]# chmod +x scripts/mysql_install_db
[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

看到两个ok就成功 
11)初始化安全配置

[root@localhost ~]# mysql_secure_installation  安全初始化配置

12)排错 
出现这种错误

Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

干掉mysql进程

[root@localhost ~]# pkill mysqld
[root@localhost ~]# rm -rf /usr/local/mysql/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 [email protected]‘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;

14)mysql_secure_installation

mysql -uroot –p  登录mysql

MySQL工作模式及常用命令

交互式模式:mysql>

# 交互式模式下的客户端命令
mysql> help # 获取命令帮助
mysql> \? # 同上
mysql> \c # 取消命令执行
mysql> \g # 发送命令至服务器端
mysql> \G # 发送命令至服务器端,垂直显示结果
mysql> \q # 退出
mysql> \! # 执行系统shell命令
mysql> \s # 显示服务器端状态信息
mysql> \. /path/to/mysql_script.sql # 批量执行sql
mysql> \u # 切换数据库

交互式模式下的服务器端命令(需要命令提示符,默认为分号)

mysql> help contents 能够获取帮助的分类信息
mysql> help keyword 获取关键字的帮助信息,如help select

脚本模式:mysql < /path/to/mysql_script.sql 
注:常用于主从复制批量导入数据时

连接MySQL

连接类型

本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信基于sock文件通信:如mysql -hlocalhost -uroot -p --socket=/tmp/mysql.sock 
远程通信:客户端与服务器端位于不同的主机,或在同一主机使用非回环地址通信基于 TCP socket通信

mysql客户端选项

实例

-u,--user # 指定连接用户
-h,--host # 指定连接主机
-p,--password # 指定连接密码
--protocol={tcp|socket|memory|pipe} # 指定连接协议
-P,--port # 指定连接端口,默认监听端口:tcp/3306
--socket # 指定本地连接的sock文件
--compress # 数据传输采用压缩格式
-D,--database # 指定连接后默认使用的数据库
-H,--html # 指定产生html输出
-X,--xml # 指定产生xml输出
--safe-updates # 拒绝使用无where子句的update或delete命令
# 使用实例:mysql -hlocalhost -uroot -p

mysql命令提示符

mysql> # 等待输入命令
-> # 等待继续输入
‘> # 等待结束单引号
“> # 等待结束双引号
`> # 等待结束反引号
/*> # 注释,不执行,需以*/结束注释

mysql的快捷键

ctrl+w:# 删除光标之前的单词
ctrl+u:# 删除光标之前至命令行首的所有内容
ctrl+y:# 粘贴所有ctrl+w或ctrl+u删除的内容
ctrl+a# 移动光标至行首
ctrl+e:# 移动光标至行尾

MySQL管理工具mysqladmin

# 使用格式:mysqladmin [options] command [arg] [,command [arg]] …
# 常用的command包括:
create DB_Name:# 创建数据库
drop DB_Name:# 删除数据库
debug:# 打开调试日志并记录于error log
status:# 显示简要状态信息
--sleep #:设置间隔时长
--count #:设置显示的批次
extended-status:# 显示扩展信息,输出mysqld的各状态变量及赋值,相当于执行“mysql> show global status
variables:# 输出mysqld的各服务器变量
flush-hosts:# 清空主机相关的缓存:DNS解析缓存;此前因为连接错误次数过多而被拒绝访问mysqld的主机列表
flush-logs:# 日志滚动,只能滚动二进制日志和中继日志
refresh:# 相当于同时使用flush-hostsflush-logs
flush-privileges:# 通知mysqld重读授权表
reload:# 功能同“flush-privileges
flush-status:# 重置状态变量的值
flush-tables:# 关闭当前打开的表文件句柄
flush-threads:# 清空线程缓存
kill:# 杀死指定的线程,需指定线程ID;可以一次杀死多个线程,以逗号分隔,但不能有多余空格
password:# 修改当前用户的密码
ping:# 模拟ping操作,检测mysqld是否在线
processlist:# 显示mysqld线程列表
shutdown:# 关闭mysqld进程
start-slavestop-slave:# 启动/关闭从服务器线程

MySQL数据文件解析

MyISAM表:每表有3个文件,都位于数据库目录中

tb_name.frm:# 表结构定义文件
tb_name.MYD:# 数据文件
tb_name.MYI:# 索引文件

InnoDB表:有2种存储方式

默认方式:每表有1个独立文件和一个多表共享的文件

tb_name.frm:# 表结构定义文件,位于数据库目录中
ibdata#:# 共享的表空间文件,默认位于数据目录(datadir指向的目录)中,如ibdata1

自定义方式:独立的表空间

tb_name.frm:#表结构定义文件
tb_name.ibd:# 独有的表空间文件
# 在MySQL初始化中打开独立表空间功能的方法:
vi /etc/my.cnf (在[mysqld]段下添加)
innodb_file_per_table = ON
# 注:表空间:table space,是由InnoDB管理的特有格式的数据文件,内部可同时存储数据和索引


本文出自 “家住海边喜欢浪” 博客,请务必保留此出处http://zhang789.blog.51cto.com/11045979/1874760

以上是关于第二章:MySQL介绍与安装的主要内容,如果未能解决你的问题,请参考以下文章

Huawei_Netconf_Ncclient

第二百七十五节,MySQL数据库安装和介绍

进击的Python第十二章:mysql介绍与简单操作,sqlachemy介绍与简单应用

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

python第二模块 步骤一 第一课MySQL的介绍

MySQL数据库5.7x版本下载安装