MySQL数据库的安装和配置
MySQL数据库介绍
什么是数据库DB?
数据库无处不在
DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;
什么是sql?
SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。
SQL包含三个部分:
数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。
数据操作语言包含允许更新和查询数据的语句。
数据控制语言允许授予用户权限访问数据库中特定数据的权限。
Mysql是什么?
My是MySQL的联合创始人 – Monty Widenius 的女儿的名字。MySQL是My和SQL的组合,这就是MySQL命名的由来。
MySQL的官方网址: http://www.mysql.com/ ,MySQL的社区版本下载地址为: http://dev.mysql.com/downloads/mysql/ ,当前MySQL最新版本是:8.0 。
MySQL是一个数据库管理系统,也是一个关系数据库。它是由Oracle支持的开源软件。这意味着任何一个人都可以使用MySQL而不用支付一毛钱。 另外,如果需要,还可以更改其源代码或进行二次开发以满足您的需要。
什么是关系型数据库(SQL)?
-
关系型数据库是依据关系模型来创建的数据库。
-
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
-
关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
什么是非关系型数据库(NOSQL)?
-
非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)
-
非关系型模型比如有:
存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,IO很快,主要是一些分布式数据库)
关系型数据库与非关系型数据库的区别:1.关系型数据库:优点:1、易于维护:都是使用表结构,格式一致;2、使用方便:SQL语言通用,可用于复杂查询;3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、固定的表结构,灵活度稍欠;3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。======================================================================================2.非关系型数据库优点:1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛.2、速度快:可以使用硬盘或者内存作为载体,而关系型数据库只能使用硬盘;3、成本低:数据库部署简单,基本都是开源软件。缺点:1、不提供sql支持,学习和使用成本较高;2、无事务处理;
关系型数据库:Oralce Mysql DB2 PostgreSQL SqlServer
非关系型数据库:Redis MongDB Memcache
MySQL部署之源码安装
安装依赖包
注: 相关依赖包的作用
cmake:由于从MySQL5.5版本开始弃用了常规的configure编译方法,所以需要CMake编译器,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost #从MySQL 5.7.5开始Boost库是必需的,mysql源码中用到了C++的Boost库,要求必须安装
源码安装与二进制(RPM)发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;b) 根据不同的软件平台环境调整相关的编译参数;c) 针对我们特定应用场景选择需要什么组件不需要什么组件;d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集(utf-8);e) 同一台主机上面可以安装多个MySQL;在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
##所需要的依赖及安装mysql的包[root@mysql_source ~]# yum -y groupinstall \"Development Tools\"[root@mysql_source ~]# yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmakebison Linux下C/C++语法分析器ncurses:字符终端处理库[root@mysql_source ~]# wget MySQL/https://aiznh.com/wp-content/uploads/2021/06/20210609020225-60c021314256f.gz ~]# groupadd mysql[root@mysql_source ~]# useradd -M -g mysql -s /sbin/nologin mysql##在系统中添加自定义mysql数据库目录及其他必要目录[root@mysql_source ~]# mkdir -p /usr/local/mysqld/{data,mysql,log,tmp}[root@mysql_source ~]# chown -R mysql:mysql /usr/local/mysqld/*##将https://aiznh.com/wp-content/uploads/2021/06/20210609020225-60c021314256f.gz解压到当前目录,并执行部署操作[root@mysql_source ~]# tar xf https://aiznh.com/wp-content/uploads/2021/06/20210609020225-60c021314256f.gz[root@mysql_source ~]# cd mysql-5.7.24[root@mysql_source mysql-5.7.24]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql \\-DMYSQL_DATADIR=/usr/local/mysqld/data \\-DWITH_BOOST=/root/mysql-5.7.24/boost \\-DDEFAULT_CHARSET=utf8#注意版本(cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql-DMYSQL_DATADIR=/usr/local/mysqld/data-DWITH_BOOST=/root/mysql-8.0.21/boost-DDEFAULT_CHARSET=utf8-DSYSCONFDIR=/etc \\-DINSTALL_MANDIR=/usr/share/man \\-DMYSQL_TCP_PORT=3306 \\-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \\-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)mysql8.0编译配置:cmake . -DWITH_BOOST=/root/mysql-8.0.21/boost \\-DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql \\-DINSTALL_DATADIR=/usr/local/data -DMYSQL_USER=mysql \\-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DDEFAULT_CHARSET=utf8 \\-DWITH_INNOBASE_STORAGE_ENGINE=1 \\-DWITH_EMBEDDED_SERVER=1 \\-DFORCE_INSOURCE_BUILD=1 \\-DENABLED_LOCAL_INFILE=1 \\-DEXTRA_CHARSETS=all \\-DWITH_BOOST=/root/mysql-8.0.21/boost-DWITH_MYISAM_STORAGE_ENGINE=1 \\ (默认的存储引擎,不加也可以)......-- Configuring done-- Generating done-- Build files have been written to: /root/mysql-5.7.24[root@mysql_source mysql-5.7.24]# echo $?0[root@mysql_source mysql-5.7.24]# make -j `lscpu | awk \'NR==4{ print $2 }\'`......[100%] Built target udf_example[root@mysql_source mysql-5.7.24]# echo $?0[root@mysql_source mysql-5.7.24]# make install......-- Installing: /usr/local/mysqld/mysql/support-files/mysql.server[root@mysql_source mysql-5.7.24]# echo $?0[root@mysql_source mysql-5.7.24]#Congratulations Complete!##初始化MySQL安装配置1.提升MySQL命令为系统级别命令[root@mysql_source ~]# echo \'export PATH=$PATH:/usr/local/mysqld/mysql/bin\'>>/etc/profile[root@mysql_source ~]# source /etc/profile2.拷贝默认配置文件至/etc/my.cnf中[root@mysql_source mysql]# chown -R mysql.mysql /usr/local/mysqld/*[root@mysql_source ~]# cd /usr/local/mysqld/mysql/mysql-test/include[root@mysql_source include]# cp /etc/{my.cnf,my.cnf.bak}[root@mysql_source include]# cp default_mysqld.cnf /etc/my.cnfcp:是否覆盖\"/etc/my.cnf\"? y[root@mysql_source include]# vim /etc/my.cnf[mysqld]basedir = /usr/local/mysqld/mysql #安装目录datadir = /usr/local/mysqld/data #数据存放目录tmpdir = /usr/local/mysqld/tmp #/tmp缓存目录socket = /usr/local/mysqld/tmp/mysql.sock #指定socket文件的位置pid_file = /usr/local/mysqld/tmp/mysqld.pid #指定pid文件的位置log_error = /usr/local/mysqld/log/mysql_error.log #错误日志的位置slow_query_log_file = /usr/local/mysqld/log/slow_warn.log #慢日志查询server_id = 11 #server-id=??user = mysql #指定用户port = 3306 #指定端口bind-address = 0.0.0.0 #监听地址(允许所以ip访问)character-set-server = utf8 #字符集default_storage_engine = InnoDB #引擎3.执行数据库服务初始化操作[root@mysql_source mysql]# mysqld --defaults-file=/etc/my.cnf --initialize --user=\'mysql\'4.启动mysqld服务[root@mysql_source mysql]# mysqld_safe --defaults-file=/etc/my.cnf &[1] 257052019-8-18T09:19:35.334751Z mysqld_safe Logging to \'/usr/local/mysqld/log/mysql_error.log\'.2019-8-18T09:19:35.379829Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysqld/data5.设置mysql.socket软链接到mysql命令指定的目录中[root@mysql_source ~]# ln -s /usr/local/mysqld/tmp/mysql.sock /tmp/mysql.sock6.配置mysqld服务的管理工具(便于启动)[root@mysql_source support-files]# cd /usr/local/mysqld/mysql/support-files[root@mysql_source support-files]# cp mysql.server /etc/init.d/mysqld[root@mysql_source support-files]# chkconfig --add mysqld[root@mysql_source support-files]# chkconfig mysqld on##登录数据库并进行更改密码[root@mysql_source mysql]# grep \"password\" /usr/local/mysqld/log/mysql_error.log2019-8-18T09:18:34.214401Z 1 [Note] A temporary password is generated for root@localhost: ejhszb2:m3wJ[root@mysql_source tmp]# mysql -uroot -p\"ejhszb2:m3wJ\"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 2Server version: 5.7.24-logCopyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.mysql> alter user \'root\'@\'localhost\' identified by \"(Bavdu..1228)\";企业中常用的MySQL部署参数:<参考使用>-DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql \\ #安装目录-DMYSQL_DATADIR=/usr/local/mysqld/data \\ #数据目录-DDOWNLOAD_BOOST=1 \\ #安装Boost插件-DWITH_BOOST=/root/mysql-5.7.24/boost \\-DSYSCONFDIR=/etc \\ #指定安装目录配置文件的位置,默认就是etc-DWITH_INNOBASE_STORAGE_ENGINE=1 \\-DWITH_PARTITION_STORAGE_ENGINE=1 \\-DWITH_FEDERATED_STORAGE_ENGINE=1 \\-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\-DWITH_MYISAM_STORAGE_ENGINE=1 \\-DENABLED_LOCAL_INFILE=1 \\ #支持从本机导入-DWITH_INNOBASE_STORAGE_ENGINE=1-DDEFAULT_CHARSET=utf8 \\ #默认字符集-DDEFAULT_COLLATION=utf8_general_ci \\ #校对规则设置为general_ci-DWITH_EMBEDDED_SERVER=1 #嵌入式服务器
***附yum安装 ***
MySQL安装部署YUM/编译
硬件需求: 准备两台一样的机器
内存: 至少2G 磁盘: 至少20G CPU: 至少2核心
MySQL部署之yum安装
Mysql开源数据库
https://www.mysql.com //mysql官网
下载yum源的rpm安装包
[root@mysql ~]# yum -y install wget[root@mysql ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm
就会配置好yum源(仓库)路径
然后进行配置
#关闭防火墙和selinux[root@mysql ~]# sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config[root@mysql ~]# systemctl stop firewalld && systemctl disable firewalld#安装必要的软件包[root@mysql ~]# yum -y groupinstall \"Development Tools\"[root@mysql ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm[root@mysql ~]# rpm -ivh mysql80-community-release-el7-1.noarch.rpm警告:mysql80-community-release-el7-1.noarch.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY准备中... ################################# [100%]正在升级/安装...1:mysql80-community-release-el7-1 ################################# [100%][root@mysql ~]##修改安装mysql的yum源文件[root@mysql ~]# vim /etc/yum.repos.d/mysql-community.repo把安装5.7的源打开, 关闭安装8.0的源[root@mysql ~]# yum -y install mysql-community-server[root@mysql ~]# systemctl start mysqld && systemctl enable mysqld
从日志中找出密码(有可能没有密码)[root@mysql ~]# grep \"password\" /var/log/mysqld.log2018-12-26T22:41:24.218413Z 1 [Note] A temporary password is generated for root@localhost: %i+g10uS.dre#登陆数据库[root@mysql ~]# mysql -uroot -p\"%i+g10uS.dre\"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 2Server version: 5.7.24Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.mysql> alter user \'root\'@\'localhost\' identified by \"jrev\";Query OK, 0 rows affected (0.00 sec)mysql> exitBye[root@mysql ~]#