zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    远程连接mysql root账号报错:2003-can't connect to MYSQL serve
    php定位并且获取天气信息
    PHP Ajax 跨域问题最佳解决方案
    AngularJS 过滤器
    AngularJS自定义指令及指令配置项
    php获取微信的openid
    SVN服务器
    redis的LRU策略理解
    golang入门案例之http client请求
    golang入门案例之SOCKET
  • 原文地址:https://www.cnblogs.com/moox/p/11240116.html
Copyright © 2011-2022 走看看