linux运维、架构之路-MySQL(一)
一、数据库管理系统
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(一)的更多相关文章
- linux运维架构师职业规划
1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...
- Linux运维必会的MySQL企业面试题大全
(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...
- 写给自己看的Linux运维基础(二) - Apache/MySQL. 安全设置. 定时任务
本文使用环境为CentOS 6 Apache, PHP, MySQL等常用软件均可通过yum安装包获取 yum install httpd php mysql-server # mysql: 客户端; ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- (转)linux运维必会MySQL企业面试题
linux运维必会MySQL企业面试题 老男孩教育运维班全体学员MySQL必会企业面试题最实战.最细致.最落地的运维实训基地,老男孩教育连续多年国内平均就业工资最高! 数据库的重要性是所有技术里最核 ...
- (转)Linux运维MySQL必会面试题100道
老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
- Linux 运维入门到跑路书单推荐
一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...
- Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!
Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...
随机推荐
- ARTS-1
ARTS的初衷 Algorithm:主要是为了编程训练和学习.每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard).进行编程训练,如果不训练你看再多的算法 ...
- AutoML文献阅读
逐步会更新阅读过的AutoML文献(其实是NAS),以及自己的一些思考 Progressive Neural Architecture Search,2018ECCV的文章: 目的是:Speed up ...
- notepad++通过调用cmd运行java程序
notepad++运行java程序方法主要有下面两个: 通过插件NppExec运行(自行百度“notepad++运行java”) 通过运行 调用cmd编译执行java程序(下面详细讲解) 点击上面工具 ...
- MySQL-快速入门(13)MySQL日志
1.MySQL的日志.主要分为4类. 1>二进制日志:记录所有更改数据的语句,可以用于数据复制. 2>错误日志:记录MySQL服务的启动.运行.停止MySQL服务时出现的问题. 3> ...
- HDU 1864 最大报销额 0-1背包
HDU 1864 最大报销额 0-1背包 题意 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上, ...
- [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)
[BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...
- tensorflow学习笔记七----------RNN
和神经网络不同的是,RNN中的数据批次之间是有相互联系的.输入的数据需要是要求序列化的. 1.将数据处理成序列化: 2.将一号数据传入到隐藏层进行处理,在传入到RNN中进行处理,RNN产生两个结果,一 ...
- 数学: HDU Co-prime
Co-prime Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Subm ...
- linux的mv、cp 命令
用mv命令1.作用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户.2.格式mv [options] 源文件或 ...
- Codeforces Round #503 (by SIS, Div. 2) E. Sergey's problem
E. Sergey's problem [题目描述] 给出一个n个点m条边的有向图,需要找到一个集合使得1.集合中的各点之间无无边相连2.集合外的点到集合内的点的最小距离小于等于2. [算法] 官方题 ...