MySQL -2- 体系结构--随笔小记
简介与安装
NoSQL
RDBMS
版本
安装方式
二进制安装,源码安装
体系结构
CS模型
TCP/IP
socket
mysql master thread
实例
mysqld 的程序构成
连接层 协议、验证、链接线程
SQL层 语法语义、权限、解析、优化、执行、日志记录
存储引擎层:存取磁盘数据
逻辑结构:库、表、属性、字符集和校对规则
表:表明、字段、记录、元数据
物理存储结构
库:就是一个目录
表:myisam、frm、myd、myi
innodb :frm ibd
innodb 存储引擎表
段 区 页
MySQL基础管理
用户权限
create user oldboy@'10.0.0.%' identified by '123'; drop user oldboy@'10.0.0.%' '; alter user oldboy@'10.0.0.%' identified by '123 select user,host from mysql.user; grant all on *.* to root@'10.0.0.%'; revoke drop,delete,insert,update from root@'10.0.0.%'; show grants for root@'10.0.0.%';
参数--root忘记密码时使用socket方式登录修改
--skip-grant-tables --skip-networking mysql -uroot -p -S /tmp/mysql.sock --socket链接方式 mysql -uroot -p -h192.168.16.174 -P3306 --tcp/IP链接方式 -P必须与-h 同时使用 -e 参数:免交互方式使用数据库,如: mysql -uroot -p123 -e"select user,host fom mysql.user;"
< 导入脚本数据
mysql -uroot -p <word.sql;
启动方式
service mysqld start --> ./mysql.server start -->mysqld_safe
./bin/mysqld_safe & --> mysqld_safe --> mysqld
systemd :systemctl start mysqld
mysql --skip-grant-tables --skip-networking
初始化配置:预编译、配置文件、命令行
作用:控制MySQL的启动、
配置文件:/etc/my.conf
命令行:仅限于mysqld_safe 和mysqld,临时维护使用
初始化配置文件:
初始化配置文件顺序,有重复的以最后一个为准
mysqld --help --verbose|grep my.cnf
但指定的除外:
--default-file=/etc/my.cnf
my.cnf
[mysqld] user=mysql basedir=/u02/app/mysql datadir=/u02/data/mysql server_id=6 port=3306 socket=/tmp/mysql.sock [mysql] socket=/tmp/mysql.sock prompt=3306[\\d]> #[mysqld_safe] #log-error=/var/log/mysqld.log #pid-file=/var/run/mysqld/mysqld.pid
标签类型:客户端、服务端
服务端标签:
【mysqld】
【mysql_safe】
【server】
客户端标签:
【mysql】
【mysqldump】
【client】
服务端例子:
【mysqld】 user=mysql basedir=/u02/app/mysql datadir=/u02/data/mysql socket=/tmp/mysql.sock server_id=6 ----5.7版本必须字段,范围1-65535 port=3306 log_err=/u02/mysql/data/mysql/mysql..log
说明:socket=/tmp/mysql.sock可以任意指定如:socket=/etc/mysql.sockaaa
重启数据库后,再次登录时需要指定
mysql -uroot -p -S socket=/etc/mysql.sockaaa service mysqld stop mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 报错原因:数据库没起,或者指定socket文件错误 netstat -lnp|grep 3306 system start mysqld
客户端例子:
【mysql】 socket=/tmp/mysql.sock prompt=3306[\\d]> #user=root #passwd=123 说明:prompt=3306[\\d]> 用于显示登录后的路径 如此时显示 3306[(none)]> 修改prompt=[\\d]> 此时显示 [(none)]> 修改 prompt=mysql> 此时显示 mysql>
多实例应用
1、准备多个目录
mkdir -p /u02/data/330{7,8,9}/data
2、生成配置文件
cat >/u02/data/3307/my.cnf<<zfd [mysqld] basedir=/u02/app/mysql datadir=/u02/data/3307/data socket=/u02/data/3307/mysql.sock port=3307 log_err=/u02/data/3307/mysql.log serve_id=7 log_bin=/u02/data/3307/mysql-bin zfd cat >/u02/data/3308/my.cnf<<zfd [mysqld] basedir=/u02/app/mysql datadir=/u02/data/3308/data socket=/u02/data/3308/mysql.sock port=3308 log_err=/u02/data/3308/mysql.log serve_id=8 log_bin=/u02/data/3308/mysql-bin zfd cat >/u02/data/3309/my.cnf<<zfd [mysqld] basedir=/u02/app/mysql datadir=/u02/data/3309/data socket=/u02/data/3309/mysql.sock port=3309 log_err=/u02/data/3309/mysql.log serve_id=9 log_bin=/u02/data/3309/mysql-bin zfd
3、初始化三套数据
mv /etc/my.cnf /etc/my.cnf.bak mysqld --initialize-insecure --user=mysql --datadir=/u02/data/3307/data --basedir=/u02/app/mysql --pid-file=/u02/data/3307/data/zhangfd.pid mysqld --initialize-insecure --user=mysql --datadir=/u02/data/3308/data --basedir=/u02/app/mysql mysqld --initialize-insecure --user=mysql --datadir=/u02/data/3309/data --basedir=/u02/app/mysql
4、system管理多实例
cd /etc/systemd/system cp mysqld.service mysqld3307.service cp mysqld.service mysqld3308.service cp mysqld.service mysqld3309.service 修改各个service :ExecStart=/u02/app/mysql/bin/mysqld --defaults-file=/u02/data/3307/my.cnf
使用service sshd start 方式启停服务的设置待解决,因为系统不能使用systemctl命令来管理服务*******
5、授权
chown -R mysql.mysql /u02/data/*
6、启动
systemctl start mysql3307.service systemctl start mysql3308.service systemctl start mysql3309.service netstat -lnp|grep 330
作者:moox
出处:http://www.cnblogs.com/moox/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。