天天看点

MySQL数据库基础(一)——MySQL数据库简介MySQL数据库基础(一)——MySQL数据库简介

mysql是一个轻量级关系型数据库管理系统,由瑞典mysql ab公司开发,目前属于oracle公司。目前mysql被广泛地应用在internet上的中小型网站中,由于体积小、速度快、总体拥有成本低,开放源码、免费,一般中小型网站的开发都选择linux + mysql作为网站数据库。

mysql是一个关系型数据库管理系统,mysql是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。

mysql的官方网站的网址是:www.mysql.com

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、可以处理拥有上千万条记录的大型数据库

与大型数据库例如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不用花一分钱就可以建立起一个稳定、免费的网站系统。

可以使用命令行工具管理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 等等。

插件式存储引擎是mysql数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是否使用事务等。mysql默认支持多种存储引擎,以适应不同领域的数据库应用需要。用户可以通过选择使用不同的存储引擎提高应用的效率,提供灵活的存储,用户设置可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性。

mysql常用的存储引擎为myisam、innodb、memory、merge,其中innodb提供事务安全表,其他存储引擎都是非事务安全表。

myisam是mysql的默认存储引擎。myisam不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。

innodb存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起myisam存储引擎,innodb写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。mysql支持外键存储引擎只有innodb,在创建外键的时候,要求附表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

主要体现在性能、事务、并发控制、参照完整性、缓存、故障恢复,备份及回存等几个方面

目前比较普及的存储引擎是myisam和innodb,而myisam又是绝大部分web应用的首选。myisam与innodb的主要的不同点在于性能和事务控制上。

myisam是早期isam(indexed sequential access method)的扩展实现,isam被设计为适合处理读频率远大于写频率的情况,因此isam以及后来的myisam都没有考虑对事物的支持,不需要事务记录,isam的查询效率相当可观,而且内存占用很少。myisam在继承了isam优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁。而且由于myisam是每张表使用各自独立的存储文件(myd数据文件和myi索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还支持在线恢复。

所以如果应用不需要事务,不支持外键,处理的只是基本的crud(增删改查)操作,那么myisam是不二选择。

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

查看rhel 6.8安装的mysql版本:

rpm -qa|grep mysql

卸载低版本mysql:

rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

解包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

拷贝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]

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

获取安装时随机管理密码

cat /root/.mysql_secret

<code># the random password set for the root user at sun apr 2 00:52:59 2017 (local time): mwgpucep8gmz0e20</code>

重设root密码

mysql -u root -p

提示输入密码后输入随机管理密码,进入mysql。

执行sql语句设置管理密码

set password for 'root'@'localhost'=password('123456');

退出mysql

chkconfig mysql on

查看

chkconfig --list | grep mysql

/var/lib/mysql/ #数据库目录

/usr/share/mysql #配置文件目录

/usr/bin #相关命令目录

/etc/init.d/mysql #启动脚本

开启mysql服务端口3306并保存

/sbin/iptables -i input -p tcp --dport 3306 -j accept

/etc/rc.d/init.d/iptables save

允许root用户在任何地方进行远程登录,并具有所有库任何操作权限

先root登录:mysql -u root -p"root"

在mysql中执行sql语句:

mysql -u root -p  //登录mysql连接

create database test;  //sql语句创建导入的数据库

use test;  //选中激活数据库

source test.sql;  //导入sql脚本

telnet连接测试 mysql服务器

使用telnet xx.xx.xx.xx 3306命令测试windows客户端是否能连接mysql服务器。

如果不能连接可能是linux服务器的防火墙或是云主机的安全组限制。

通常mysql服务会对连接的客户端进行域名解析,影响访问mysql的速度。因此需要关闭mysql域名解析功能。在/etc/my.cnf配置文件中设置。

在[mysqld]服务栏以下位置设置skip-name-resolve,如下:

重启mysql服务。