一、数据库管理系统

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. Spring MVC对日期处理的不友好问题

    一.后台日期类型解析到前端 1.在springmvc的配置文件中添加这个.annotation-driven在配置文件中只配置一次     (此方法全局作用)<mvc:annotation-dr ...

  2. HTML5 表单的补充+注意事项

    input标签中  type="image" 与 type="submit"属性   的区别    (下文简写image和submit) 1.这两者都可以响应请 ...

  3. Tensorflow Learning1 模型的保存和恢复

    CKPT->pb Demo 解析 tensor name 和 node name 的区别 Pb 的恢复 CKPT->pb tensorflow的模型保存有两种形式: 1. ckpt:可以恢 ...

  4. 微PE.PE工具

    1.ZC:想要 干掉Win7x64的密码(没人用的机子,不知道密码,不想重装OS) 1.1.超详细微pe工具箱使用教程 _ 微pe工具箱怎么用.html(http://www.360doc.com/c ...

  5. 文件压缩、解压工具类。文件压缩格式为zip

    package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...

  6. laravel框架源码分析(一)自动加载

    一.前言 使用php已有好几年,laravel的使用也是有好长时间,但是一直对于框架源码的理解不深,原因很多,归根到底还是php基础不扎实,所以源码看起来也比较吃力.最近有时间,所以开启第5.6遍的框 ...

  7. 分享一个linux系统中循环遍历两个数组内容,并输出数组中的不同内容的shell脚本

    cat diffarray.sh #!/bin/bash arry_list1=(1 2 3 4 5 6 7 8 9) arry_list2=(3 5 8) declare -a diff_list ...

  8. [19/06/04-星期二] HTML基础_实体(转义字符)、图片标签(img)、元标签(meta)、语法规范、内联框架(iframe)、超链接

    一.实体(转义字符) 在HTML中,一些诸如<.> 就是普通的小于号和大于号不能直接使用,因为浏览可能会把它当成一个标签去解析,所以需要一些特殊字符去表示这些特殊字符, 这些字符我们称他们 ...

  9. BAT推荐免费下载JAVA转型大数据开发全链路教程(视频+源码)价值19880元

    如今随着环境的改变,物联网.AI.大数据.人工智能等,是未来的大趋势,而大数据是这些基石,万物互联,机器学习都是大数据应用场景! 为什么要学习大数据?我们JAVA到底要不要转型大数据? 好比问一个程序 ...

  10. C++中的字符串类

    1,本文分析 C++ 中的字符串,C 语言中的字符串利用的是 C 语言中的字符数组,  在 C 语言中没有真正意义上的字符串,利用了字符数组表示了字符串,最初设  计 C 语言仅仅是为了开发 Unix ...