MySQL数据库及其部署

数据库

MySQL

MySQL是由瑞典MySQL AB 公司开发,目前属于 Oracle (甲骨文)旗下产品。 是最流行的关系型数据库管理系统之一,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
在这里插入图片描述
关系型数据库
关系型数据库是依据关系模型来创建的数据库。所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。常见的关系型数据库有:SQLServer ,Oracle ,Mysql等。

有了关系型数据库那自然也少不了非关系型数据库,非关系型数据库主要是基于“非关系模型”的数据库,由于关系型数据库太多了,所以一般用“非关系型”来表示其他类型的数据库。非关系型数据库有:redis ,mongodb ,memcached

关系型数据库与非关系型数据库的优缺点

关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致。
2、使用方便:SQL语言通用,可用于复杂查询。
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写。
2、固定的表结构,灵活度稍欠;。
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。


非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等 等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
3、高扩展性。
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高。
2、无事务处理。
3、数据结构相对复杂,复杂查询方面稍欠。

SQL语句

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

SQL包含三个部分:
数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。
数据操作语言包含允许您更新和查询数据的语句。
数据控制语言允许授予用户权限访问数据库中特定数据的权限。

SQL语句

SQL(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER**
DML语句 数据库操纵语言(对记录的操作):插入数据INSERT、删除数据DELETE、更新数据UPDATE**
DCL语句 数据库控制语言(和权限有关):例如控制用户的访问权限GRANT、REVOKE**
DQL语句 数据库查询语言: 查询数据SELECT**

MySQL yum安装

关闭防火墙和SELinux

去网页搜索MySQL官网www.mysql.com
在这里插入图片描述
进去后向下滑,国外的网站速度可能会比较慢

在这里插入图片描述
在这里插入图片描述
进入后会看到有red hat发行的Linux8版本也有linux7的,我们在这里用Linux7版本的
在这里插入图片描述
进入后右键复制链接地址,也可以直接左键点击下载到本地终端
在这里插入图片描述

[root@xiaobai] systemctl stop firewalld;setenforce 0   #关闭防火墙和SELinux
#复制下载链接方法
[root@xiaobai] yum -y install wget   #下载wget命令
[root@xiaobai] wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm   #把刚才复制的链接地址用wget命令下载下来

#下载到本地的方法
[root@xiaobai] yum provides *rz*   #命令和包名不一样时可以这样搜索该命令的安装包
[root@xiaobai] yum -y install lrzsz   #下载rz命令
[root@xiaobai] rz   #找到本地下载的mysql rpm包进行上传

确定mysql包已在服务器后,就可以解压了

[root@xiaobai] rpm -ivh mysql80-community-release-el7-3.noarch.rpm   #解压
[root@xiaobai] yum -y install yum-utils   #安装yum工具包
[root@xiaobai] vim /etc/yum.repos.d/mysql80-community.repo   #修改yum源的配置

在这里插入图片描述
也可以不进入配置文件修改

[root@xiaobai] yum-config-manager --enable mysql57-community   #将禁用的yum源库启用
[root@xiaobai] yum-config-manager --disable mysql80-community   #将启用的yum源库禁用

安装数据库

[root@xiaobai] yum install -y mysql-community-server   #下载mysql数据库
[root@xiaobai] systemctl start mysqld   #启动mysql服务
[root@xiaobai] systemctl enable mysqld   #将其设置开机自启动

安装好后root的初始密码都在==/var/log/mysqld.log== 文件中

[root@xiaobai] grep password /var/log/mysqld.log   #过滤密码
2019-08-18T14:03:51.991454Z 1 [Note] A temporary password is generated for root@localhost: woHtkMgau9,w   #注意:之后的所有字符串全都是密码

初始密码只用来登录,进入mysql后无法操作,需要修改密码

#修改密码方法1
[root@xiaobai] mysql -uroot -p'woHtkMgau9,w'   #登录 
#mysql内部开头是mysql>
mysql> alter user 'root'@'localhost' identified by 'XiaoBai@123!';   #sql语句
mysql> exit   #退出mysql
[root@xiaobai] mysql -uroot -p 'XiaoBai@123!'   #用新密码就可以登录了

#修改密码方法2
[root@xiaobai] mysqladmin -u root -p'旧密码' password '新密码'   #这个不需要进入mysql内就能修改

注意: mysql密码强度规定必须是有大小写字母,数字以及特殊符号

也可以通过如下方式修改密码强度
vim /etc/my.cnf #在最后添加如下内容
validate_password=off #保存并退出
systemctl restart mysqld #重启mysql生效

yum安装恢复初始化

如果你不想删除MySQL可以选择恢复初始化

[root@xiaobai] systemctl stop mysqld
[root@xiaobai] rm -rf /var/lib/mysql/*
[root@xiaobai] rm -rf /var/log/mysql*

#还原mysql的主配置文件 /etc/my.cnf
[root@xiaobai]vim /etc/my.cnf 

#可以敲mysqld --verbose --help来查看mysql初始化命令
[root@xiaobai] mysqld --initialize --user=mysql   #初始化命令
#yum安装会自动生成一个mysql用户,不用创建
#敲初始化命令会有两个报错
[ERROR]:/var/log/mysqld.log不存在
[root@xiaobai] touch /var/log/mysqld.log
[root@xiaobai] chown mysql.mysql /var/log/mysqld.log

#再次执行初始化命令即可

编译安装 MySQL

一定在编译安装前清理一下环境,防止之前安装过

[root@xiaobai] yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
[root@xiaobai] userdel -r mysql
[root@xiaobai] rm -rf /etc/my.cnf
[root@xiaobai] rm -rf /var/lib/mysql

创建mysql用户

[root@xiaobai] useradd -r mysql -M -s /bin/false
[root@xiaobai] systemctl stop firewalld;setenforce 0   #关闭防火墙和SELinux

下载安装编译工具
mysql-boost-5.7.27.tar.gz包链接

[root@xiaobai] yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake
[root@xiaobai] mkdir -p /usr/local/{mysql,log}   #预先创建部分mysql目录
[root@xiaobai] tar -xzf mysql-boost-5.7.27.tar.gz -C /usr/local/   #解压并指定解压路径

注:如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的 安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误 安装包里面自带boost包

[root@xiaobai] cd /usr/local/mysql-5.7.27   #cd到解压的目录

#用刚刚下载的cmake编译
[root@xiaobai] cmake . -DWITH_BOOST=boost/boost_1_59_0/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data -DINSTALL_MANDIR=/usr/share/man -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1

#提示:boost也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行 
-DDOWNLOAD_BOOST=1/

注释:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #安装目录
-DSYSCONFDIR=/etc #配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data #数据目录 错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man #帮助文档
-DMYSQL_TCP_PORT=3306 #默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock #sock文件位置,用来做网络通信的,客户端连接服务器的 时候用
-DDEFAULT_CHARSET=utf8 #默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all #扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci #支持的
-DWITH_READLINE=1 #上下翻历史命令
-DWITH_SSL=system #使用私钥和证书登陆(公钥) 可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 #嵌入式数据库
-DENABLED_LOCAL_INFILE=1 #从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1 #默认的存储引擎,支持外键

[root@xiaobai] make && make install   #编译及其安装

如果安装出错,想重新安装: 不用重新解压,只需要删除安装目录中的缓存文件CMakeCache.txt

[root@xiaobai] cd /usr/local/mysql
[root@xiaobai] chown -R mysql.mysql .   #将mysql目录的属主属组改为mysql,一定记住最后的点
[root@xiaobai] ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data   #初始化完成之后,一定要记住提示最后的密码用于登陆或者修改密码
#一定要记住最后提示的密码,如果想再次初始化将mysql下的data目录删掉即可

在这里插入图片描述

[root@xiaobai] vim /etc/my.cnf   #打开配置文件
#添加如下内容
[mysqld]
basedir=/usr/local/mysql   #指定安装目录
datadir=/usr/local/mysql/data   #指定数据存放目录

在这里插入图片描述
启动mysql

[root@xiaobai] cd /usr/local/mysql
[root@xiaobai] ./bin/mysqld_safe --user=mysql &   #将mysql服务放到后台启动
[root@xiaobai] ss -ntal   #查看被占用端口号
[root@xiaobai] ps -ef |grep mysql   #查看mysql进程

登录mysql

[root@xiaobai] /usr/local/mysql/bin/mysql  -uroot -p'u>oj-e&oC3pM'   #登录然后修改密码,原密码在初始化时有
mysql> alter user 'root'@'localhost' identified by 'XiaoBai@123!';   #修改密码

添加环境变量

[root@xiaobai] vim /etc/profile   #打开配置文件
#在最后添加如下内容
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
#保存并退出
[root@xiaobai] source /etc/profile   #加载配置文件,此时可以不用敲绝对路径登录mysql了

配置mysqld服务的管理工具

[root@xiaobai] cd /usr/local/mysql/support-files
[root@xiaobai] cp mysql.server /etc/init.d/mysqld
[root@xiaobai] chkconfig --add mysqld   #mysqld 程序加入service 管理程序,加入系统服务
[root@xiaobai] chkconfig mysqld on   #设置开机自启动
[root@xiaobai] ps -ef |grep mysql   #查看mysql进程
[root@xiaobai] kill -9 38631
[root@xiaobai] kill -9 38728   #先将原来的进程杀掉
[root@xiaobai] /etc/init.d/mysqld start   #启动服务命令方法1
[root@xiaobai] service mysqld start   #启动服务命令方法2
#Starting MySQL. SUCCESS!
[root@xiaobai] ss -ntal   #查看占用端口号
[root@xiaobai] /etc/init.d/mysqld stop   #停止服务命令方法1
[root@xiaobai] service mysqld stop   #停止服务命令方法2

在这里插入图片描述

文中内容适用于初学者 @小白

发布了17 篇原创文章 · 获赞 19 · 访问量 1112

猜你喜欢

转载自blog.csdn.net/little_baixb/article/details/104811230