MySQL从删库到跑路(一)——MySQL数据库简介

作者:天山老妖S 链接:http://blog.51cto.com/9291927

一、MySQL简介

1、MySQL简介

MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。目前MySQL被广泛地应用在Internet上的中小型网站中,由于体积小、速度快、总体拥有成本低,开放源码、免费,一般中小型网站的开发都选择Linux + MySQL作为网站数据库。 MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。 MySQL的官方网站的网址是:www.mysql.com

2、MySQL特性

MySQL是一种使用广泛的数据库,特性如下: A、使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性    B、支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。    C、为多种编程语言提供了API。编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。    D、支持多线程,充分利用CPU资源    E、优化的SQL查询算法,有效地提高查询速度    F、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名    G、提供TCP/IP、ODBC和JDBC等多种数据库连接途径    H、提供用于管理、检查、优化数据库操作的管理工具    I、可以处理拥有上千万条记录的大型数据库

3、MySQL应用

与大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。 目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于Linux+Apache+MySQL+PHP都是自由或开放源码软件(FLOSS),因此使用LAMP不用花一分钱就可以建立起一个稳定、免费的网站系统。

4、MySQL管理

可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。    phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web界面管理MySQL资料库。    phpMyBackupPro也是由PHP写成的,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。    另外,还有其他的GUI管理工具,例如早先的mysql-front以及ems mysql manager,navicat 等等。

二、MySLQ存储引擎

1、MySQL存储引擎简介

插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是否使用事务等。mySQL默认支持多种存储引擎,以适应不同领域的数据库应用需要。用户可以通过选择使用不同的存储引擎提高应用的效率,提供灵活的存储,用户设置可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性。 MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。 InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。MySQL支持外键存储引擎只有InnoDB,在创建外键的时候,要求附表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

2、MySQL存储引擎特性

主要体现在性能、事务、并发控制、参照完整性、缓存、故障恢复,备份及回存等几个方面 目前比较普及的存储引擎是MyISAM和InnoDB,而MyISAM又是绝大部分Web应用的首选。MyISAM与InnoDB的主要的不同点在于性能和事务控制上。 MyISAM是早期ISAM(Indexed Sequential Access Method)的扩展实现,ISAM被设计为适合处理读频率远大于写频率的情况,因此ISAM以及后来的MyISAM都没有考虑对事物的支持,不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MyISAM在继承了ISAM优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁。而且由于MyISAM是每张表使用各自独立的存储文件(MYD数据文件和MYI索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还支持在线恢复。 所以如果应用不需要事务,不支持外键,处理的只是基本的CRUD(增删改查)操作,那么MyISAM是不二选择。

三、MySQL数据库安装

1、MySQL下载

MySQL版本的选择 MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 MySQL Enterprise Edition 企业版本,需付费,可以试用30天。 MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。 MySQL Cluster CGE 高级集群版,需付费。 MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据库建模工具,是著名的数据库设计工具DBDesigner4的继任者。MySQLWorkbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL WorkbenchSE)。 本文选择MySQL Community Server 5.6.35 下载网址: https://dev.mysql.com/downloads/mysql/5.6.html#downloads 操作系统选择: Red Hat Enterprise Linux/ Oracle Linux 操作系统版本选择: Red Hat Enterprise Linux 6 / Oracle Linux 6 (x86, 64-bit) 下载MySQL捆绑包: MySQL-5.6.35-1.el6.x86_64.rpm-bundle.tar MySQL捆绑包包含七个部分: RHEL兼容包:MySQL-shared-compat-5.6.35-1.el6.x86_64.rpm MySQL服务端程序:MySQL-server-5.6.35-1.el6.x86_64.rpm MySQL客户端程序:MySQL-client-5.6.35-1.el6.x86_64.rpm MySQL开发库:MySQL-devel-5.6.35-1.el6.x86_64.rpm MySQL共享库:MySQL-shared-5.6.35-1.el6.x86_64.rpm 嵌入式版本:MySQL-embedded-5.6.35-1.el6.x86_64.rpm 测试组件:MySQL-test-5.6.35-1.el6.x86_64.rpm

2、卸载低版本MySQL

查看RHEL 6.8安装的MySQL版本: rpm -qa|grep mysql 卸载低版本MySQL: rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

3、安装MySQL

解包MySQL捆绑包: tar -xvf MySQL-5.6.35-1.el6.x86_64.rpm-bundle.tar A、安装RHEL兼容包 rpm -ivh MySQL-shared-compat-5.6.35-1.el6.x86_64.rpm B、安装MySQL共享库 rpm -ivh MySQL-shared-5.6.35-1.el6.x86_64.rpm C、安装MySQL服务端程序 rpm -ivh MySQL-server-5.6.35-1.el6.x86_64.rpm D、安装MySQL客户端程序 rpm -ivh MySQL-client-5.6.35-1.el6.x86_64.rpm E、安装MySQL开发库 rpm -ivh MySQL-devel-5.6.35-1.el6.x86_64.rpm

4、MySQL配置

拷贝MySQL配置文件到/etc目录 cp /usr/share/mysql/my-default.cnf /etc/mysql.conf 修改/etc/mysql.conf如下: [client] password = 123456 port = 3306 default-character-set=utf8 [mysqld] port = 3306 character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci lower_case_table_names=1 ##设置最大连接数,默认为 151,MySQL服务器允许的最大连接数16384 max_connections=1000 [mysql] default-character-set = utf8 初始化MySQL数据库: /usr/bin/mysql_install_db

5、管理密码修改

获取安装时随机管理密码 cat /root/.mysql_secret # The random password set for the root user at Sun Apr 2 00:52:59 2017 (local time): MwgPucEp8gMz0e20 重设root密码 mysql -u root -p 提示输入密码后输入随机管理密码,进入mysql。 执行SQL语句设置管理密码 SET PASSWORD FOR 'root'@'localhost'=PASSWORD('123456'); 退出mysql

6、设置开机启动MySQL

chkconfig mysql on 查看 chkconfig --list | grep mysql

7、MySQL默认安装目录说明

/var/lib/mysql/ #数据库目录 /usr/share/mysql #配置文件目录 /usr/bin #相关命令目录 /etc/init.d/mysql #启动脚本

8、MySQL服务端口开启

开启MySQL服务端口3306并保存 /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT /etc/rc.d/init.d/iptables save

9、授权root用户远程登录连接

允许root用户在任何地方进行远程登录,并具有所有库任何操作权限 先root登录:mysql -u root -p"root" 在mysql中执行SQL语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;FLUSH PRIVILEGES;

10、将SQL脚本导入mysql数据库

mysql -u root -p //登录mysql连接 create database test; //SQL语句创建导入的数据库 use test; //选中激活数据库 source test.sql; //导入sql脚本

11、客户端连接MySQL服务器

telnet连接测试 MySQL服务器 使用telnet xx.xx.xx.xx 3306命令测试Windows客户端是否能连接MySQL服务器。 如果不能连接可能是Linux服务器的防火墙或是云主机的安全组限制。

12、关闭MySQL服务的域名解析功能

通常MySQL服务会对连接的客户端进行域名解析,影响访问MySQL的速度。因此需要关闭MySQL域名解析功能。在/etc/my.cnf配置文件中设置。 在[mysqld]服务栏以下位置设置skip-name-resolve,如下:

# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
skip-name-resolve

重启MySQL服务。

END

原文发布于微信公众号 - 程序员的成长之路(cxydczzl)

原文发表时间:2018-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券