二十一、Mysql-介绍与安装

1、简介

MySQL 是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
关系数据库管理系统(Relational Database Management System,RDBMS),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统 。

数据库一般分为以下两种:
关系型数据库
非关系型数据库

常用的关系型数据库软件有: MYSQL、Mariadb、Oracle、SQL Server、PostgreSQL、DB2等 ;
常用的非关系型数据库软件有: Redis、memcached。

2、mysql引擎

mysql引擎包括:ISAM、MyISAM、InnoDB、MEMORY、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、Berkeley、Merge、Federated、Cluster/NDB等。其中MyISAM、InnoDB使用最为广泛,如下为两款引擎功能对比:

引擎特性MyISAMInnoDB
批量插入的速度
集群索引不支持支持
数据缓存不支持支持
索引缓存支持支持
数据可压缩支持不支持
磁盘空间使用
内存使用
外键支持不支持支持
存储限制没有64TB
事务安全不支持支持
锁机制表锁行锁
B树索引支持支持
HASH索引不支持支持
全文索引支持不支持

Mysql 5.0之前默认引擎为MyISAM,Mysql 5.5之后默认引擎为InnoDB。MyISAM主要强调的是性能,其执行速度比InnoDB更快,但不提供事务支持,不支持外键,如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁,myisam引擎查询性能高。InnoDB支持事务、外键、行级锁等高级数据库功能,可执行大量的INSERT或UPDATE, InnoDB引擎写性能高。

3、安装
MySQL安装方式有两种,一种是yum/rpm安装,另外一种是tar源码安装。

3.1 yum安装

yum 安装方法很简单,执行如下命令即可:

Centos6: yum install –y mysql-server  mysql-devel  mysql 
Centos7:yum install –y  mariadb  mariadb-devel  mariadb-server

安装完成后查询命令:

[root@localhost ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
mariadb-devel-5.5.64-1.el7.x86_64
mariadb-5.5.64-1.el7.x86_64
mariadb-server-5.5.64-1.el7.x86_64

安装目录介绍:

mariadb 主配置目录:/var/lib/mysql
mariadb 数据目录:/var/lib/mysql
mariadb 命令目录:/usr/bin 
mariadb 默认配置文件:/etc/my.cnf 
mariadb 启动文件:/usr/bin 
mariadb 日志文件:/var/log/mariadb

3.2 源码安装

3.2.1 源码安装5.5版本

[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.60.tar.gz
[root@localhost src]# tar xf mysql-5.5.60.tar.gz 
[root@localhost src]# yum install gcc ncurses-devel libaio bison gcc-c++  git cmake  ncurses-devel ncurses -y
[root@localhost src]# cd mysql-5.5.60/ 

预编译

cmake  .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0

编译、安装

make  && make install

#时间较长,耐心等待

安装完成之后进行配置文件、权限等设置

[root@localhost mysql-5.5.60]# cp support-files/my-large.cnf /usr/local/mysql55/my.cnf 
[root@localhost mysql-5.5.60]# cp support-files/mysql.server /etc/init.d/mysqld 
[root@localhost mysql-5.5.60]# chmod +x  /etc/init.d/mysqld 
[root@localhost mysql-5.5.60]# mkdir -p /data/mysql 
[root@localhost mysql-5.5.60]# useradd -s /sbin/nologin mysql 
[root@localhost mysql-5.5.60]# chown -R mysql. /data/mysql
#初始化
[root@localhost mysql-5.5.60]# /usr/local/mysql55/scripts/mysql_install_db  --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql55
#启动
[root@localhost mysql-5.5.60]# /etc/init.d/mysqld start
Starting MySQL SUCCESS! 

3.2.2 源码安装5.7版本

[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 
[root@localhost src]# tar xf boost_1_59_0.tar.gz 
[root@localhost src]# mv boost_1_59_0 /usr/local/boost 
# Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护
[root@localhost src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz 
[root@localhost src]# tar xf  mysql-5.7.25.tar.gz
[root@localhost src]# yum install gcc ncurses-devel libaio bison gcc-c++  git cmake  ncurses-devel ncurses -y
[root@localhost src]# cd mysql-5.7.25

预编译

cmake  .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql7/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3307 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

编译、安装

make && make install

#时间较长,耐心等待

安装完成之后进行配置文件、权限等设置

[root@localhost mysql-5.7.25]# mkdir -p /data/mysql7 
[root@localhost mysql-5.7.25]# useradd -s /sbin/nologin mysql 
[root@localhost mysql-5.7.25]# chown -R mysql. /data/mysql7
[root@localhost mysql-5.7.25]# cp support-files/mysql.server /etc/init.d/mysqld7 
[root@localhost mysql-5.7.25]# chmod +x  /etc/init.d/mysqld7
[root@localhost mysql-5.7.25]# vim /usr/local/mysqld7/my.cnf 

#添加如下配置
[mysqld] 
basedir=/usr/local/mysql7/ 
datadir=/data/mysql7/ 
port=3307 
pid-file=/data/mysql7/mysql7.pid 
socket=/tmp/mysql.sock
[mysqld_safe] 
log-error=/data/mysql7/mysql7.log

#初始化
[root@localhost mysql-5.7.25]# /usr/local/mysql7/bin/mysqld --initialize --user=mysql --datadir=/data/mysql7 -basedir=/usr/local/mysql7/
#启动
[root@localhost mysql-5.7.25]# /etc/init.d/mysql7 start
Starting MySQL SUCCESS! 

#跳过权限表
[root@localhost mysql-5.7.25]# vim /usr/local/mysql7/my.cnf 
 # 在[mysqld]字段下添加:
 skip-grant-tables
#然后重启服务: 
[root@localhost mysql-5.7.25]# /etc/init.d/mysql7 restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
#免密进入数据库: 如果只启动了一个数据库服务,可以直接用下面的命令进入,要是有多个服务启动,会默认进入3306的数据 库,到时可以指定IP和端口进入。 
[root@localhost mysql-5.7.25]# /usr/local/mysql7/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
#更新密码为空:
mysql> update mysql.user set authentication_string=password('') where user="root";

安装目录介绍:

mysql 主配置目录:/usr/local/mysql7 
mysql 数据目录:/data/mysql7 
mysql 命令目录:/usr/local/mysql7/bin/* 比如:mysql、mysqld等。 
mysql 配置文件:/usr/local/mysql7/my.cnf 
mysql 启动文件:/usr/local/mysql7/support-files/mysql.server 或者 是/etc/init.d/mysqld 
mysql 日志文件:/data/mysql7

3.2.3 cmake参数详解

cmake  .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \     Cmake预编译
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 				MYSQL Socket通信文件位置
-DMYSQL_DATADIR=/data/mysql \ 						MYSQL数据存放路径
-DSYSCONFDIR=/etc \									配置文件路径
-DMYSQL_USER=mysql \								MYSQL运行用户
-DMYSQL_TCP_PORT=3306 \							MYSQL监听端口
-DWITH_XTRADB_STORAGE_ENGINE=1 \ 				开启xtradb引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE=1 \  			开启innodb引擎支持
-DWITH_PARTITION_STORAGE_ENGINE=1 \ 			开启partition引擎支持
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \			开启blackhole引擎支持
-DWITH_MYISAM_STORAGE_ENGINE=1 \				开启MyISAM引擎支持
-DWITH_READLINE=1 \ 								启用快捷键功能
-DENABLED_LOCAL_INFILE=1 \ 						允许从本地导入数据
-DWITH_EXTRA_CHARSETS=1 \						支持额外的字符集
-DDEFAULT_CHARSET=utf8 \							默认字符集UTF-8
-DDEFAULT_COLLATION=utf8_general_ci \ 				检验字符
-DEXTRA_CHARSETS=all \ 							安装所有扩展字符集
-DWITH_BIG_TABLES=1 \ 								将临时表存储在磁盘上
-DWITH_DEBUG=0									禁止调试模式支持

4、登录数据库服务器

源码安装方式启动、登录上文已介绍,以下介绍启动和登录为yum安装方式。

#启动命令
[root@localhost mysql-5.5.60]# systemctl start mariadb

# 1、通过unix套接字连接,直接使用mysql 或者mysql -uroot -p进行登录 
[root@localhost mysql-5.5.60]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#查看连接状态
MariaDB [(none)]> status;
--------------
mysql  Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1
#连接id
Connection id:		2
# 当前使用的数据库,没有选择为空
Current database:	
Current user:		root@localhost
# 是否使用加密
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
# 结束符为分号
Using delimiter:	;
Server:			MariaDB
Server version:		5.5.64-MariaDB MariaDB Server
Protocol version:	10
# 连接方式,本地套接
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
# 套接字地址
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			1 min 55 sec

Threads: 1  Questions: 5  Slow queries: 0  Opens: 0  Flush tables: 2  Open tables: 26  Queries per second avg: 0.043
--------------


# 2、通过tcp套接字连接 
通过mysql  -h127.0.0.1 登录服务器,查看状态:
可以看到连接id不同,套接字也不同,使用的是tcp/ip的套接字通信。 如果有时候遇到无法通过本地套接字连接,可以使用指定服务器ip连接

5、mysql配置文件详解

[mysqld]   							//服务器端配置
datadir=/data/mysql   					//数据目录
socket=/var/lib/mysql/mysql.sock 		//socket通信设置  
user=mysql 							//使用mysql用户启动;
symbolic-links=0  					//是否支持快捷方式;
log-bin=mysql-bin  					//开启bin-log日志;
server-id = 1  						//mysql服务的ID;
auto_increment_offset=1				//自增长字段从固定数开始;
auto_increment_increment=2				//自增长字段每次递增的量;
socket = /tmp/mysql.sock     			//为MySQL客户程序与服务器之间的本地通信套接字文件;
port             = 3306      			//指定MsSQL监听的端口;
key_buffer       = 384M      		//key_buffer是用于索引块的缓冲区大小;
table_cache      = 512       			//为所有线程打开表的数量;
sort_buffer_size = 2M        			//每个需要进行排序的线程分配该大小的一个缓冲区;
read_buffer_size = 2M        			//读查询操作所能使用的缓冲区大小。
query_cache_size = 32M       			//指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size    = 8M 			//改参数在使用行指针排序之后,随机读;
myisam_sort_buffer_size = 64M			//MyISAM表发生变化时重新排序所需的缓冲;
thread_concurrency      = 8  			//最大并发线程数,取值为服务器逻辑CPU数量×2;
thread_cache            = 8  			//缓存可重用的线程数;
skip-locking            				//避免MySQL的外部锁定,减少出错几率增强稳定性。 
default-storage-engine=INNODB         //设置mysql默认引擎为Innodb;
#mysqld_safe config			
[mysqld_safe]  						//mysql服务安全启动配置;
log-error=/var/log/mysqld.log  			//mysql错误日志路径;
pid-file=/var/run/mysqld/mysqld.pid 	    //mysql PID进程文件;
key_buffer_size = 2048MB				//MyISAM表索引缓冲区的大小;
max_connections = 3000				//mysql最大连接数;
innodb_buffer_pool_size	= 2048MB	//InnoDB内存缓冲数据和索引大小;
basedir      = /usr/local/mysql55/  	    //数据库安装路径;
[mysqldump]			                //数据库导出段配置;
max_allowed_packet      =16M 		//服务器和客户端发送的最大数据包;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值