zoukankan      html  css  js  c++  java
  • 运维mysql基础

    1 mysql简介

    一般写某个东西先介绍一下,我就老生常谈的简单介绍下(摘自维基百科)

    https://zh.wikipedia.org/wiki/MySQL

    MySQL(官方发音为英语发音:/maɪ ˌɛskjuːˈɛl/“My S-Q-L”[1],但也经常读作英语发音:/maɪ ˈsiːkwəl/“My Sequel”)原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。

    MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。

    但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,因此原先一些使用MySQL的开源软件逐渐转向其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库[2]。MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB

    2基本用法

    1,关于mysql的引擎

    查看默认存储引擎
    show variables like 'storage_engine';     
    查看mysql支持的存储引擎
    show variables like 'have%';
    InnoDB      MyISAM     MEMORY   的存储引擎
    InnoDB 优势在于提供了良好的事务管理,崩溃修复能力和并发控制。特点:读写效率稍微差,占用的数据空间相对比较大
     MyISAM 优势在于占用空间小,处理速度快,缺点不支持事务的完整性和并发性。
     MEMORY不常用。
    InnoDB储存引擎支持事务处理,支持外键。同时支持崩溃修复能力,和并发控制。如果需要对事务的完整性要求比较高,要求实现并发控制,那选择InnoDB存储引擎有很大的优势。如果频繁的进行更新,删除操作的数据库,也可以选择InnoDB存储引擎。应为改存储引擎可以实现事务的提交和回滚。
    MyISAM存储引擎的插入数据快,空间和内存使用比较低。如果表主要用于插入记录和读出记录,那么选择MyISAM比较高效率。如果应用的完整性,并发性要求低,也可以选择。

    2基本用法

    1. 忘记root密码
     编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数  skip-grant-tables  ,重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot ,修改相应用户密码 
    use mysql;
     update user set password=password('your password') where  user='root';
    flush privileges;  
    在mysql5.7中不建议使用上边的方法
    ALTER USER 
    基本使用
    
    ALTER USER testuser IDENTIFIED BY '123456';
    修改当前登录用户
    
    ALTER USER USER() IDENTIFIED BY '123456';
    使密码过期
    
    ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE;
    使密码从不过期
    
    ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
    按默认设置过期时间
    
    ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE DEFAULT;
    指定过期间隔
    
    ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE INTERVAL 90 DAY;
    在MySQL文档里,推荐使用ALTER USER修改用户密码
    
    SET PASSWORD
    使用SET PASSWORD的password有两种:
    
    使用默认加密
    
    SET PASSWORD FOR testuser = '123456'
    使用PASSWORD()函数加密
    
    SET PASSWORD FOR testuser = PASSWORD("123456")
    注意:使用PASSWORD('auth_string')的方式已经被废弃,在以后的版本会把它移除,所以不建议使用它来修改密码。
    最后修改/etc/my.cnf 去掉 skip-grant-tables , 重启mysql服务
    当我们第一次使用mysql命令的时候我们提示命令不存在的时候,我们加入path就行了 
    在配置文件中 /etc/profile 中 
    PATH=$PATH:/usr/local/mysql/bin 
    然后别忘记 
    source /etc/profile 
    或者写全路径   /usr/local/mysql/bin/mysql -uroot

    给 mysql root用户设置密码 
    mysqladmin -uroot password '123456' 
    登陆 
    mysql -uroot -p123456 
    2. skip-innodb   我们可以增加这个参数不使用innodb引擎。
     
    3. 配置慢查询日志
    #log_slow_queries = /path/to/slow_queries
     #long_query_time = 1
    4. mysql常用操作
     查看都有哪些库  show databases;
    查看某个库的表 use db; show tables;
    查看表的字段 desc tb;
    查看建表语句 show create table tb;
    show create table tbG; (格式化输出)
    当前是哪个用户  select user();
    当前库 select database();
    创建库 create database db1;
    指定字符集:

    创建表 create table t1 (`id` int(4), `name` char(40));  
    查看数据库版本 select version();
    查看mysql状态 show status;
    修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;
    查看mysql队列 show processlist;
    插入:
    创建普通用户并授权 grant all on *.* to user1 identified by '123456';
     grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
     grant all on db1.* to 'user3'@'%' identified by '231222';insert into tb1 (id,name) values(1,'aming');
    on后边加授权的库
    %  所有的意思。。。。
    更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;  
    查询 select count(*) from mysql.user; 
    select * from mysql.db; 
    select * from mysql.db  G;   (格式化输出)
    select * from mysql.db where host like '10.0.%';
    插入 update db1.t1 set name='aaa' where id=1;  
    清空表 truncate table db1.t1;
    删除表 drop table db1.t1;
    删除数据库 drop database db1;
    修复表 repair table (表名)tb1 [use frm];(可以最好加上)
    删除表中的某一个
    打开使用innodb
    vim /etc/my.cnf(这个文件)
     
    show variables;列出标的参数
     
     
    show variables  like 'version';(使用like过滤)
     
    % %   模糊查询
     
     
    set   修改某个参数:(局部生效,,重新启动后就恢复了)
     
    一般我们修改的  max_connections
    show  processlist;   (查看队列,查看链接数据库状态)
     
    查询行数:(查询mysql表字段的行数
     
    5. mysql备份与恢复
     备份 mysqldump -uroot -p123456 db >1.sql
    恢复 mysql -uroot -p db(创建一个新表) <1.sql  
    只备份一个表  mysqldump -uroot -p db tb1 > 2.sql
     
    -d(只备份创建表的语句)
    备份时指定字符集 mysqldump -uroot -p --default-character-set=utf8  db >1.sql
    恢复也指定字符集 mysql -uroot -p --default-character-set=utf8  db  < 1.sql
    面试常问的:
  • 相关阅读:
    bzoj4195 [Noi2015]程序自动分析
    bzoj4236 JOIOJI hash 模拟
    bzoj1012 [JSOI2008]最大数maxnumber
    day 4 名片管理系统 -函数版
    day 3 局部变量 全局变量
    day 2 函数的嵌套
    day1 函数 (独立功能代码块)
    day 14 元组
    day 13 字典dict 操作
    day 12 列表字典 补充
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/5918296.html
Copyright © 2011-2022 走看看