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使用最为广泛,如下为两款引擎功能对比:

引擎特性 MyISAM InnoDB
批量插入的速度
集群索引 不支持 支持
数据缓存 不支持 支持
索引缓存 支持 支持
数据可压缩 支持 不支持
磁盘空间使用
内存使用
外键支持 不支持 支持
存储限制 没有 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

安装目录介绍:

扫描二维码关注公众号,回复: 8512279 查看本文章
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 		//服务器和客户端发送的最大数据包;
发布了34 篇原创文章 · 获赞 1 · 访问量 516

猜你喜欢

转载自blog.csdn.net/weixin_42440154/article/details/103680056