一、数据库管理系统

1、RDBMS关系型数据库特点

①二维表

②典型产品Oracle传统企业,MySQL是互联网企业产品

③数据存取通过SQL

④最大的特点,数据安全性很强(ACID)

2、NoSQL非关系型数据库特点

①不是否定关系型数据库,做关系型数据库的补充

②典型产品:Redis持久化缓存、MongoDB、Memcached

③管理不适用SQL管理,而是用一些特殊的API或者数据接口

二、MySQL安装方式

1、Yum安装方便、安装速度快,无法定制

2、二进制:不方便安装,解压即可使用,无法定制

3、编译安装:可定制,安装慢

5.5之前:./configure make && make install

5.5之后:cmake gmake

4、定制RPM包,先编译然后制作rpm再制作yum仓库,然后yum安装

       安装简单、速度快,可定制,定制时间长,比较复制,大型企业都会选择定制RPM

三、实战编译安装MySQL-5.6.36

1、环境

[root@db mysql-5.6.]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db mysql-5.6.]# uname -r
2.6.-.el6.x86_64
[root@db mysql-5.6.]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db mysql-5.6.]# getenforce
Disabled
[root@db mysql-5.6.]# hostname -I
172.19.5.54 172.16.1.54

2、安装

安装依赖包创建用户

yum  install  -y  ncurses-devel libaio-devel cmake
useradd -s /sbin/nologin -M mysql
mkdir /server/tools/ -p
cd /server/tools/
wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
tar xf mysql-5.6..tar.gz
cd mysql-5.6.
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6. \
-DMYSQL_DATADIR=/application/mysql-5.6./data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6./tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE= \
-DWITH_FEDERATED_STORAGE_ENGINE= \
-DWITH_BLACKHOLE_STORAGE_ENGINE= \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE= \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE= \
-DWITH_EMBEDDED_SERVER= \
-DENABLE_DOWNLOADS= \
-DWITH_DEBUG=
make && make install
ln -s /application/mysql-5.6./ /application/mysql
\cp /server/tools/mysql-5.6./support-files/my*.cnf /etc/my.cnf
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
cp /server/tools/mysql-5.6./support-files/mysql.server /etc/init.d/mysqld
chmod /etc/init.d/mysqld
chkconfig mysqld on
chkconfig --list mysqld
mkdir /application/mysql/tmp
chown -R mysql.mysql /application/mysql/
echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
source /etc/profile
/etc/init.d/mysqld start

Cmake的作用

①定制软件的安装路径
②定制mysql的源程序和命令脚本
bin/mysqld(二进制的)关键守护程序源码
bin/mysql
bin/mysqld_safe
scripts/mysql.server
bin/mysqldump
bin/mysqladmin
supports-file/mysql_install_db

5.7版本开始,需要安装Boost库

-DWITH_BOOST=/server/tools/boost_1_59_0 \
也可以直接cmake指定参数 -DDOWNLOAD_BOOST= -DWITH_BOOST=<directory> 系统会下载 boost

3、清理数据库及不需要的用户

drop database test;
drop user 'root'@'::1';
drop user 'root'@'db';
drop user ''@'db';
drop user ''@'localhost';
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
rows in set (0.00 sec)
mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
+------+-----------+
rows in set (0.00 sec)

4、安装遇到的报错

问题1:

ERROR! The server quit without updating PID file (/application/mysql-5.6.36/data/db.pid).

 解决:

chown -R mysql.mysql /application/mysql-5.6./

问题2:

数据库启动会提示,找不到/application/tmp/mysql.sock,原因是5.6.36版本不会自动创建tmp目录

解决:

mkdir /application/mysql/tmp

其它常见问题

	①权限.chown -R mysql.mysql
②killall mysqld
③重新初始化数据.
④运行1年了,出问题(非法(断电)关机或者非法关数据库,例如kill -9)

四、MySQL基础命令使用

命令

说明

show databases;

查询显示所有的数据库信息

create database oldboy;

创建新的数据库

drop database oldboy;

删除存在的数据库

use mysql;

表示选择使用一个数据库,相当于cd进入一个数据库

show tables;

查看数据库中表信息

select database();

表示查看当前所在数据库,类似于pwd命令的功能

select user();

查看当前登录数据库的用户,类似于whoami命令

select * from user\G;

查看user表中所有信息,并且纵行显示

select user,host from user;

查看user表中指定信息,并且横行显示

select user,host from mysql.user;

查看可以登录mysql数据库的目录,以及都可以从哪里进行管理mysql数据库

drop user 'user'@'host';

删除用户

flush privileges;

刷新权限

grant all on .* to user@'host' identified by 'oldboy123';

创建用户

grant all on .* to Old_Boy@'localhost' identified by 'oldboy123';

创建用户(用户名包含大写字母)

mysqladmin -u root password '123456';

为用户设置密码

mysqladmin -uroot -p123456 password 654321

修改密码,在知道旧密码的前提下

delete from mysql.user where user="root" and host="Mysql";

遇主机名大写,特殊字符使用drop无法删除

 五、MySQL多实例配置

1、环境

[root@db ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db ~]# uname -r
2.6.-.el6.x86_64
[root@db ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db ~]# getenforce
Disabled
[root@db ~]# hostname -I
172.19.5.54 172.16.1.54

2、配置多实例

①创建多实例目录授权

mkdir /data/{,}/data -p
chown -R mysql.mysql /data/

②上传多实例配置文件到/下并解压

cd /
#上传打包好的多实例配置文件、数据、启动命令
unzip data.zip
[root@db /]# tree /data
/data
├──
│   ├── my.cnf
│   └── mysql
└──
├── my.cnf
└── mysql directories, files

③初始化多实例数据库

cd /application/mysql/scripts/
./mysql_install_db --basedir=/application/mysql/ --datadir=/data//data/ --user=mysql #初始化数据库3306
./mysql_install_db --basedir=/application/mysql/ --datadir=/data//data/ --user=mysql #初始化数据库3307

④授权并启动多实例数据库

#5.6.36特殊性:需要创建错误日志文件
touch
/data//oldboy_3306.err
touch /data//oldboy_3307.err
chown -R mysql.mysql /data
chmod +x /data//mysql
chmod +x /data//mysql
/data//mysql start
/data//mysql start

配置MySQL命令启动环境变量

方法一:
ln -s /application/mysql/bin/* /usr/local/sbin/
方法二:
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile

⑤MySQL多实例设置密码及登录

#设置密码:
mysqladmin -uroot password 123456 -S /data/3306/mysql.sock
mysqladmin -uroot password 123456 -S /data/3307/mysql.sock
#登录数据库,指定sock
mysql -uroot -p123456 -S /data/3306/mysql.sock
mysql -uroot -p123456 -S /data/3307/mysql.sock

查看多实例端口

[root@db ~]# netstat -lntup|grep
tcp ::: :::* LISTEN /mysqld
tcp ::: :::* LISTEN /mysqld

⑥快速搭建3308实例

mkdir -p /data//data
\cp /data//my.cnf /data//
\cp /data//mysql /data//
sed -i 's/3306/3308/g' /data//my.cnf
sed -i 's/server-id = 6/server-id = 8/g' /data//my.cnf
sed -i 's/3306/3308/g' /data//mysql
chown -R mysql:mysql /data/
chmod /data//mysql
cd /application/mysql/scripts
./mysql_install_db --defaults-file=/data//my.cnf --datadir=/data//data --basedir=/application/mysql --user=mysql
chown -R mysql:mysql /data/
egrep "server-id|log-bin" /data//my.cnf
touch /data//oldboy_3308.err
/data//mysql start
sleep
netstat -lnt|grep

3、MySQL密码找回

①停止MySQL服务

/etc/init.d/mysqld stop

②加参数启动

mysqld_safe --skip-grant-table --user=mysql &

③登录修改密码

set password=password('');
flush privileges;
mysql> mysql
mysql> update mysql.user set password=PASSWORD('') where user='root' and host='localhost';

注:5.7中PASSWORD字段变成了authentication_string

④刷新权限重新MySQL

mysql> flush privileges;
/etc/init.d/mysqld restart

⑤重新登录测试

mysql -uroot -p123456

⑥多实例MySQL密码找回

#停库#
mysqld_safe --defaults-file=/data//my.cnf --skip-grant-tables &
mysqladmin -uroot -p123456 -S /data//mysql.sock shutdown

六、MySQL管理实战

1、MySQL连接管理

①TPC/IP的方式

mysql -uroot -p123456 -h 10.0.0.54

②套接字文件的方式

mysql -uroot -p123456 -S /data/3306/mysql.sock

2、MySQLD服务器程序构成

3、MySQL用户权限

①查看用户

select user,host from mysql.user;

②创建用户

CREATE USER '用户'@'主机' IDENTIFIED BY '密码';
create user 'oldboy'@'locahost' identified by 'oldboy123'; #只能连接

③工作中常用授权网段方式

方法1:172.16.1.% #%为通配符,匹配所有内容
方法2:172.16.1.0/255.255.255.0 #是不能使用172.16.1.0/24

④查看用户对应的权限

show grants for oldboy@localhost\G

⑤删除用户

drop user 'user'@'主机域'
遇主机名大写特殊的删除方法:

delete from mysql.user where user='bbs' and host='172.16.1.%';
flush privileges;

⑥创建用户并授权

grant all on *.* to oldboy@'172.16.1.%' identified by '123456';
flush privileges;

⑦权限回收

REVOKE INSERT ON *.* FROM oldboy@localhost;

⑧可以授权的用户权限

INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE

⑨博客正确授权

grant select,insert,update,delete,create,drop on blog.* to 'blog'@'172.16.1.%' identified by '123456';
revoke create,drop on blog.* from 'blog'@'172.16.1.%';

3、MySQL初始化配置文件

4、MySQL的关闭

 ①使用MySQL自带的管理脚本

/etc/init.d/mysqld stop

②使用mysqladmin管理

mysqladmin -uroot - shutdown #必须知道数据库密码

③利用系统进程管理命令关闭MySQL(不建议使用)

kill  pid       #<==这里的pid为数据库服务对应的进程号。
killall mysqld #<==这里的mysqld是数据库服务对应的进程名字。
pkill mysqld #<==这里的mysqld是数据库服务对应的进程名字

企业高并发场景野蛮粗鲁杀死mysql导致数据库故障

http://oldboy.blog.51cto.com/2561410/1431161
http://oldboy.blog.51cto.com/2561410/1431172

linux运维、架构之路-MySQL(一)的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. Linux运维必会的MySQL企业面试题大全

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  3. 写给自己看的Linux运维基础(二) - Apache/MySQL. 安全设置. 定时任务

    本文使用环境为CentOS 6 Apache, PHP, MySQL等常用软件均可通过yum安装包获取 yum install httpd php mysql-server # mysql: 客户端; ...

  4. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  5. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  6. (转)linux运维必会MySQL企业面试题

    linux运维必会MySQL企业面试题  老男孩教育运维班全体学员MySQL必会企业面试题最实战.最细致.最落地的运维实训基地,老男孩教育连续多年国内平均就业工资最高! 数据库的重要性是所有技术里最核 ...

  7. (转)Linux运维MySQL必会面试题100道

    老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口 ...

  8. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  9. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  10. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

随机推荐

  1. 第三方app抽奖发送微信红包实现

    1.控制器方法: private string SendRedPackge(string OpenId, int Amount, string LuckyCode) { Models.PayWeiXi ...

  2. LeetCode.872-叶子值相等的树(Leaf-Similar Trees)

    这是悦乐书的第334次更新,第358篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第204题(顺位题号是872).考虑二叉树的所有叶子,从左到右的顺序,这些叶子的值形成叶 ...

  3. DedeCMS调取其他织梦CMS站点数据库数据方法

    第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php.注:mysql.lib.php, ...

  4. STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)

    硬件设计 该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等:另一个是USB Host设备,可以对插上的U盘的数据进行读写. 图中J2是Mi ...

  5. django中使用原生的orm

    只有用的时候才能执行

  6. docker--搭建docker swarm集群

    10 搭建docker swarm集群 10.1 swarm 介绍 Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行 为.比如我们常见的蜂群,鱼群,秋天 ...

  7. 使用certbot 为nginx或openresty启用https

    certbot 使用letsencrypt 生成免费https证书 以下内容网上整理,原文地址 https://segmentfault.com/a/1190000005797776 -------- ...

  8. js实现计算器效果

    <!DOCTYPE html> <html> <!-- Created using jsbin.com Source can be edited via http://j ...

  9. PCIe事务层包TLP Header详解

    1.事务层包的一般格式: 包的header为3DW(double word)或者4DW(一个DW代表4字节),数据负载为1~1024DW(即4~4096byte,最大4M),TLP Digest可选, ...

  10. 【源码解读】pix2pix(一):训练

    源码地址:https://github.com/mrzhu-cool/pix2pix-pytorch 相比于朱俊彦的版本,这一版更加简单易读 训练的代码在train.py,开头依然是很多代码的共同三板 ...