一、数据库以及DBA介绍
1、主流的数据库产品
首先了解一下:
RDBMS:
关系数据库管理系统(Relational Database Management System:RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序(数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。
当下主流的产品有:
Oracle,Mysql,Microsoft SQL Server ,PG
NoSQL:
最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
当下主流产品有:
Redis,MangoDB,ES,Cassandra等
NewSQL:
是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
当下主要的产品:
TiDB、Spanner、AliSQL、OB、PolarDB
未来数据发展的趋势:
RDBMS===》NOSQL+RDBMS === 》NOSQL(RDBMS)+RDBMS(NOSQL)===》NEWSQL(spanner,TiDB,PDB)
想要了解更多主流数据库的趋势可以浏览:主流数据产品趋势。
2、DBA
数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
企业对于Mysql的选择:
以下列出的版本都比较稳定的Mysql版本,所以才会被企业青睐
版本及发布时间:
5.6 : 5.6.34(2016-9-30),5.6.36 (2017-3-18),5.6.38(2017-9-13), 5.6.40 (2018-2-26)
5.7 : 5.7.18(2018-3-18),5.7.20(2017-9-13) ,5.7.24(2018-10-4) ,5.7.26(2019-4-13)
8.0 : 8.0.14(2019-12-20), 8.0.15(2019-1-26) ,8.0.16(2019-4-13)
3、Mysql介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
二、Mysql安装(5.7.26版本)
我用的系统是CentOS 7 。
步骤一:
从Mysql官网https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar下载二进制软件安装包到本的然后上传(命令:rz)到Linux系统当中,或者也可以直接在Linux当中下载:wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar(这个可能会比较慢,建议先下载到电脑本地然后上传),我这里是下载到了/server/tools(这是我个人的软件包目录,可根据自己需要上传到指定目录)目录下
#注意:本地要是有Mariadb的要先卸载,已经的卸载略过
#查看
rpm -qa mariadb
#卸载(不考虑依赖包)
rpm -e mariadb --nodeps
#环境准备安装依赖包:
yum install -y libaio-devel
步骤二:
下载好安装包之后,解压:
#解压命令
tar xf mysql-5.7.26-linux-glibc2.12-x86_64_2.tar
解压后会发现有两个包如下圈出所示,有个test包,这个肯能是个测试的包,可以不用理会。
然后再解压一次:
#解压
tar xf mysql-5.7.26-linux-glibc2.12-x86_64_2.tar.gz
#移动到/appication/目录下(我个人的软件安装目录,可以根据自己跟人而定自己需要的目录)
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application
#或者直接解压指定目录:
tar xf mysql-5.7.26-linux-glibc2.12-x86_64_2.tar.gz -C /application
#创建一个软链接:
ln -s /application/mysql-5.7.26-linux-glibc2.12-x86_64/ /application/mysql
#创建一个mysql用户
useradd -s /sbin/nologin mysql -M
#配置一下环境变量
echo 'PATH=/application/mysql/bin:$PATH' >>/etc/profile
. /etc/profile
#创建一个存放数据的目录:/data/mysql/data
mkdir -p /data/mysql/data
#授权
chown -R mysql.mydql /data/mysql/data
步骤三:
#查看一下数据库
mysql -V
初始化数据库带有随机密码(一般不用此初始化):
#注意:初始化数据库,此命令是初始化有随机密码的数据库(一般初始化的时候不带有密码,此仅作介绍使用)
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
#说明:
--initialize 参数:
1. 对于密码复杂度进行定制:12位,4种
2. 密码过期时间:180
3. 给root@localhost用户设置临时密码
初始化数据库不带随机密码(常规用法):
# --initialize-insecure :无限制,无临时密码
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
步骤四:
添加简单的配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
log_error = /application/mysql/data/oldboy_mysql.err
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
启动数据库
#直接启动命令:
/application/mysql/support-files/mysql.server start
#启动数据库:sys-v
#把启动脚本给系统service命令管理:
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld restart
#启动数据库:systemctl
#把启动脚本给systemctl命令管理(自启动管理)
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
#启动脚本
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
#更新启动文件
systemctl daemon-reload
#启动
systemctl start mysql
错误排查:
有类似:without updating PID 的错误
查看日志文件,在/data/mysql/data目录下的以.err结尾的文件,找到[ERROR]的上下位置
一般可能情况:
1、配置文件:/etc/my.cnf 路径不对或者参数不对等
2、/tmp/mysql.sock文件修改过 或 删除过
解决:重新初始化,启动
3、数据目录(/data/mysql/data)权限不是mysql
解决:chown 更改目录的用户为mysql
三、数据库的密码
切记:数据库管理员的密码可谓重中之重,不可轻易与他人看到,否则后果不堪设想!!!
1、管理员密码的设定:
# (root@localhost)注意:实际生产当中不要如此配置密码,会让别人看到,不安全
mysqladmin -uroot -p password any123
2、登录修改密码
#进入数据库之后执行,会提示有error错误
alter user root@'localhost' identtified by '密码';
#看到error错误后,然后刷新
flush privileges;
#再执行,就ok了
alter user root@'localhost' identtified by '密码';
3、管理员忘记密码找回
1、先关闭数据库
systemctl stop mysql
2、命令行输入,启动数据库到维护模式
mysqld_safe --skip-grant-tables --skip-networking &
文章到此结束!!!谢谢!!