一、关系型数据库和非关系型数据库

  1.1:关系型数据库

    关系型数据库是把复杂的数据结构归结为简单的二元关系(即二维表格的形式),在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上的,通过对这些关联的表格分类、合并、连接或者选取等运算来实现数据的管理。我们常用的MySQL和oracle、MariaDB、SQL server都是关系型数据库。

  1.2:非关系型数据库

    非关系型数据库被称为"NoSQL",NoSQL的产生并不是要彻底的否定关系型数据库,而是作为传统关系型数据库的一个有效的补充,NoSQL数据库在特定的场景下可以发挥很难想象的高效率和高性能,NoSQL典型的产品memcached(纯内存)、redis(持久化缓存)、mongodb、Hbase等等。

  1.3:非关系型数据库的种类

    ① 键值对(key-value)存储数据库(memcached、redis)

    ② 列存储(Column-oriented)数据库(Cassandra、HBase)

    ③ 面向文档(Document-Oriented)数据库(mongodb)

    ④ 图形(Graph)数据库(我也不知道)

二、MySQL介绍

  MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有的数据统一放在一个大的仓库,这样的设计增加了MySQL的读取速度,灵活性可管理性也得到了大的提高,访问MySQL数据库最常用的标准语言是SQL结构化查询语。

  选择MySQL数据库的几个原因

  ① MySQL性能卓越,服务稳定,很少宕机

  ② MySQL开发源代码无版权约束,自主性及成本低

  ③ 社区用户活跃

  ④ MySQL体积小,安装使用简单,利于维护

  ⑤ MySQL口碑好,流行企业架构LAMP LNMP

  ⑥ MySQL支持多操作系统,提供多种API,支持多语言开发

三、如何选择MySQL数据库版本

   ① 稳定版:选择开源社区办的稳定版GA版本

  ② 产品线:可以选择5.5或者5.7 互联网现在主流5.5 其次是5.1和5.6或者5.7 最好不要选择5.5之前的,因为这是个大坑

  ③ 选择MySQL数据库GA版本发布6月以后的

  ④ 要考虑开发人员开发的程序是否兼容

  ⑤ 还有就是根据实际情况而定,活灵活现

四、多种安装方式及什么时候使用什么方式

  PS:所有的方式我们用的MySQL的版本是MySQL5.7的版本

4.1:yum安装的方式(适合对数据库要求不太高的场合,例如并发不大、公司内部、zabbix、自己的博客)

    ① 下载MySQL5.7的源

[root@rsync131 ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

    ② 安装yum仓库

[root@rsync131 ~]# yum localinstall -y mysql57-community-release-el7-7.noarch.rpm

    ③ 安装MySQL5.7

[root@rsync131 ~]# yum install -y mysql-community-server

    ④ 启动MySQL服务

[root@rsync131 ~]# systemctl start mysqld.service

    ⑤ 查看随机生成的密码

[root@rsync131 ~]# grep 'temporary password' /var/log/mysqld.log
2018-09-08T10:59:31.829660Z 1 [Note] A temporary password is generated for root@localhost: dKG,g/3l7*uI # 这个就是随机的密码

    ⑥ 修改密码

[root@rsync131 ~]# mysql -uroot -pdKG,g/3l7*uI
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23 Copyright (c) 2000, 2018, 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> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, 0 rows affected (0.00 sec) # 第一种方式 mysql> set password for 'root'@'localhost'=password('MyNewPass4!');
Query OK, 0 rows affected, 1 warning (0.00 sec) # 第二种方式 mysql>flush privileges;

    ⑦ 修改密码策略

    使用初始随机密码登录后MySQL会强制要求修改密码,否则无法正常使用,(密码必须包含小写、大写字母及特殊字符),这个策略是可以修改的

# 查看策略相关信息
mysql> show variable'%password%'
-> ;
+---------------------------------------+--------+
| Variable_name | Value |
+---------------------------------------+--------+
| default_password_lifetime | 0 |
| disconnect_on_expired_password | ON |
| log_builtin_as_identified_by_password | OFF |
| mysql_native_password_proxy_users | OFF |
| old_passwords | 0 |
| report_password | |
| sha256_password_proxy_users | OFF |
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+---------------------------------------+--------+
14 rows in set (0.00 sec) # 修改方法
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off 重新启动mysql服务使配置生效:
systemctl restart mysqld

    ⑧ 远程连接授权

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass4!' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

    ⑨ 设置防火墙

开通端口(默认3306):

firewall-cmd --add-port=3306/tcp

/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

    ⑩ 文件默认路径

默认配置文件路径:

配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid

4.2:编译安装的方式(在真正的场景下用的比较多的最好的方式)

    ① 安装所需要的包及下载MySQL源码包

[root@rsync131 ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
[root@rsync131 ~]# wget http://www.mysql.com/Downloads/MySQL-5.7/mysql-5.7.23.tar.gz

    ② 下载和解压boost库

[root@rsync131 ~]# wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

[root@rsync131 ~]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@rsync131 ~]# cd /usr/local/
[root@rsync131 local]# mv boost_1_59_0 boost

    ③ 创建运行用户

useradd -M -s /sbin/nologin mysql  # 创建用户mysql,不创建家目录,不允许登陆系统

    ④ 解压、配置、安装

[root@rsync131 ~]# tar xf mysql-5.7.23.tar.gz -C /opt/
[root@rsync131 ~]# cd /opt/mysql-5.7.23/
[root@rsync131 ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc -DSYSTEMD_PID_DIR=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=/usr/local/boost -DWITH_SYSTEMD=1 # 配置
[root@rsync131 ~]# make && make install # 安装 # ==================================cmake解释===================================== cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ # 指定mysql数据库安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ # 连接文件位置
-DSYSCONFDIR=/etc \ # 指定配置文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \ # 进程文件目录
-DDEFAULT_CHARSET=utf8 \ # 指定默认使用的字符集编码
-DDEFAULT_COLLATION=utf8_general_ci \ # 指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ # 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ # 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ # 存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ # 存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ # 数据库文件
-DWITH_BOOST=/usr/local/boost \ # 指定Boost库的位置,mysql5.7必须添加该参数
-DWITH_SYSTEMD=1 # 使系统支持MySQL数据库

    ⑤ 修改数据库目录权限

[root@rsync131 mysql-5.7.23]# chown -R mysql:mysql /usr/local/mysql/

    ⑥ 设置配置文件

mysql 5.7 版本和以前的有所不同,如果配置文件不做修改,则服务启动失败

[root@rsync131 mysql-5.7.23]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES [root@rsync131 mysql-5.7.23]# chown mysql:mysql /etc/my.cnf //修改配置文件的权限

    ⑦ 设置环境变量及初始化数据库

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile //使写入生效 # 初始化数据库
cd /usr/local/mysql/
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ===================解释================
cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \ # 生成初始化密码(5.7版本才有),实际会生成空密码
--user=mysql \ # 指定管理用户
--basedir=/usr/local/mysql \ # 指定工作目录
--datadir=/usr/local/mysql/data # 指定数据文件目录

    ⑧ 添加系统服务、开机自启

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload //刷新识别mysqld.service服务
systemctl enable mysqld //加入系统自启动
systemctl start mysqld //启动服务
netstat -anpt | grep 3306

    ⑨ 修改密码及远程授权

# 修改密码
[root@rsync131 mysql]# mysqladmin -u root -p password "abc123"
Enter password: abc123 # 登录
[root@rsync131 mysql]# mysql -u root -pabc23 # 设置远程授权
grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
//第一个“*”代表所有数据库,第二“*”代表所有表,赋予root权限 “%”代表所有服务器终端,可设为IP地址 密码为“abc123”

    ⑩ 设置防火墙

开通端口(默认3306):

firewall-cmd --add-port=3306/tcp

/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

4.3:二进制安装的方式(在真正的场景下用的比较多的第二好的方式)

    ① 下载二进制包

[root@rsync131 ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

    ② 卸载系统自带的MariaDB

[root@rsync131 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@rsync131 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
[root@rsync131 ~]# rpm -qa | grep mariadb
[root@rsync131 ~]#

    ③ 创建MySQL用户

[root@rsync131 ~]# useradd -M -s /sbin/nologin mysql

    ④ 解压安装包,并且重命名

[root@rsync131 ~]# tar xf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@rsync131 ~]# cd /usr/local/
[root@rsync131 local]# mv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql/

    ⑤ 将mysql添加为系统服务及设置开机自启

[root@rsync131 local]# cp mysql/support-files/mysql.server /etc/init.d/mysql
[root@rsync131 local]# chkconfig --add mysql

    ⑥ 初始化数据库

[root@rsync131 bin]# cd /usr/local/mysql/
[root@rsync131 mysql]# mkdir data -p # 数据存放目录 [root@rsync131 mmysql]# yum install -y libaio # 必须安装不然会报下面的错误
错误信息
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory # 初始化
[root@rsync131 mmysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2018-09-08T14:15:21.330311Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-09-08T14:15:21.488188Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-09-08T14:15:21.511408Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-09-08T14:15:21.565037Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 9f0919fe-b371-11e8-92a6-000c292579e0.
2018-09-08T14:15:21.565691Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-09-08T14:15:21.566064Z 1 [Note] A temporary password is generated for root@localhost: sQ3LjJkq1Z(z # 数据库的初始化密码

    ⑦ 启动mysql服务,使用临时密码登录mysql并修改登录密码

[root@rsync131 mysql]# systemctl start mysql
[root@rsync131 mysql]# ps -ef | grep mysql
root 1686 1 0 22:16 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/rsync131.pid
mysql 1771 1686 0 22:16 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=rsync131.err --pid-file=/usr/local/mysql/data/rsync131.pid
root 1823 1475 0 22:20 pts/0 00:00:00 grep --color=auto mysql [root@rsync131 mysql]# ./bin/mysql -u root -p
Enter password: sQ3LjJkq1Z(z # 初始化密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23 Copyright (c) 2000, 2018, 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> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); # 修改密码
Query OK, 0 rows affected, 1 warning (0.00 sec)

    ⑧ 设置任何远程主机都可以访问数据库

[root@rsync131 mysql]# ./bin/mysql -u root -p123456   # 修改后的密码
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, 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> grant all privileges on *.* to 'root' @'%' identified by '123456'; # 设置权限
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; # 刷新权限
Query OK, 0 rows affected (0.00 sec) mysql>

    ⑨ 设置防火墙

开通端口(默认3306):

firewall-cmd --add-port=3306/tcp

/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

  

MySQL介绍及安装(一)的更多相关文章

  1. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  2. mysql介绍及安装

    一.MySQL介绍 1.标志 MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的 ...

  3. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  4. MySQL介绍与安装

    mysql介绍 #mysql就是一个基于socket编写的C/S架构的软件 #客户端软件 mysql自带:如mysql命令,mysqldump命令等 python模块:如pymysql 数据库管理软件 ...

  5. MySQL介绍及安装&MySQL软件基本管理

    mysql介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好 ...

  6. 第一章·MySQL介绍及安装

    一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 4.1 什么是数据? 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客 ...

  7. MySQL(介绍,安装,密码操作,权限表)

    一.数据库介绍1.数据库相关概念 a.支持并发     b.锁的问题     c.对客户端请求进行认证     d.存取效率(降低IO次数)    数据库服务器(本质就是一个台计算机,该计算机之上安装 ...

  8. MySQL介绍,下载,安装,配置

    MySQL用了很多年了,今天写个总结. 一.介绍 MySQL是开源软件,后来归Oracle所有.开源便于软件的完善改进.但开源不等于滥用,也不等于完全免费.MySQL有商业版,商业用途是付费的.也有免 ...

  9. 02-MySQL 介绍和安装

    MySQL 介绍和安装 1.什么是数据? 数据: 文字.图片.视频...人类认知的数据表现方式 计算机: 二进制.16进制的机器语言 基于数据的重要性和复杂性的不同,我们可能有不同的管理方式. 哪些数 ...

随机推荐

  1. 【Linux】Jenkins配置和使用(二)

    摘要 本章介绍Jenkins的简单使用,关于Jenkins的安装,参照[Linux]Jenkins安装(一) 事例说明:在linux环境下,安装的jenkins,集成svn,tomcat的环境,项目是 ...

  2. tomcat中如何配置虚拟路径

    第一步:打开server.xml配置文件.在Host节点里写上该行代码: <Context path="/upload" docBase="E:\upload&qu ...

  3. IntelliJ IDEA 2017版 编译器使用学习笔记(三) (图文详尽版);IDE快捷键使用

    一.列操作 功能:操作多行列执行相同的功能,达到一次修改多行同类型数据的情况,如图:                 Json字符串,转为枚举类的字段: 首先进行,快捷键一行快速操作 1.选中命令,s ...

  4. ESRI.ArcGIS.AnalysisTools.Erase 结果是空?

    用ESRI.ArcGIS.AnalysisTools.Erase擦除,结果总是空的. 这几天一直纠结一个问题,就是在AE下使用ESRI.ArcGIS.AnalysisTools中的工具(例如:泰森多边 ...

  5. 一)如何开始 ehcache ?

    官网地址 http://www.ehcache.org/ 从哪开始 第一步优先下载 http://www.ehcache.org/downloads/ 下载 Ehcache 2.10.0 .tar.g ...

  6. 201709012工作日记--一台电脑创建两个Github账户上传代码

    1. 在一台主机上面使用多个GitHub账号 有时候,我们需要将个人账号和公司账号区分,这时候我们就会需要在一台电脑上使用2个不同的git账号. 2. 上传文件 http://blog.csdn.ne ...

  7. (回文串 Manacher )Girls' research -- hdu -- 3294

    http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit:1000MS     Memory Limit:32 ...

  8. noip第10课作业

    1.     统计不同类型字符出现次数 [问题描述] 输入一个字符串(假设长度不超过1000个字符),统计其中大写,小写,数字,其他字符出现的次数. [样例输入]Hello,what are you ...

  9. hdu 2063 匈牙利算法

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 男女配对最大数 匈牙利算法模板 #include <cstdio> #include < ...

  10. 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建

    1. 前言 基于Maven的开发方式开发项目已经成为主流.Maven能很好的对项目的层次及依赖关系进行管理.方便的解决大型项目中复杂的依赖关系.S2SH(Struts2+Spring+Hibernat ...