mysql修行练级之mysql新手入门常用命令

创建时间:2014.08.24

修改时间:2014.09.26


从一个运维工程师和DBA新手的角度出发,学习,实践从而掌握mysql相关操作。

1.登录MySQL服务器

当面对一个正在运行的mysql服务,我们需要做的第一件事情就是登录mysql服务。

MySQL客户端能够以两种不同的方式连接到mysqld服务器:

  1. 通过文件系统中的文件(默认为/tmp/mysql.sock)使用Unix套接字进行连接。

  2. 通过端口号使用TCP/IP进行连接。

Unix套接字文件的连接速度比TCP/IP快,但仅能在与相同计算机上的服务器相连时使用。
如果未指定指定主机名或指定了特殊的主机名localhost,将使用Unix套接字。

A.通过IP和端口的方式登录MYSQL服务

  • 本地登录

    liuqunying# mysql -h 127.0.0.1 -u用户名 -p用户密码 [-Pmysqlport;#默认为3306,也可以单独指定]

    如,mysql运行在我当前使用的机器上:

    mysql -h127.0.0.1 -uqunyingliu -p51cto20140824
  • 远程登录

    liuqunying# mysql -h主机IP或主机名 -u用户名 -p用户密码 [-Pmysqlport;#默认为3306,也可以单独指定]

    如,mysql服务运行在远程服务器上:

    mysql -h 10.1.8.24 -u qunyingliu -p 51cto20140824
  • 非标准端口登录

    非3306服务端口登录,例如:

    mysql -u qunyingliu -p 51cto20140824 -P 3307
    mysql -h 10.1.8.24 -u qunyingliu -p 51cto20140824 -P 3307

B.通过socket链接mysql服务

    mysql -S mysql.sock文件地址

例如,

    mysql -S /tmp/mysql/mysql.sock

当然如前所述,以下两种登录方式,默认也是通过unix连接mysql服务的:

mysql
mysql -P 3307 -u qunyingliu -p51cto20140824
mysql -h localhost -P 3307 -u qunyingliu -p51cto20140824

如果通过socket方式连接mysql,当mysql.sock文件不是默认的名称或存放路径时,我们将会收到类似如下错误信息:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

2.Mysql常用交互命令

  • Databases(数据库)相关操作

    show databases; 显示数据库
    create database name; 创建数据库
    use databasename; 选择数据库,屏幕提示:Database changed
    drop database name 直接删除数据库,无提示
    mysqladmin drop databasename 删除数据库前,有提示。

  • Tables(数据表)相关操作

    show tables; 显示表
    create table 表名(字段列表);创建数据库里面一个表格

    命令:create table <表名( <字段名1<类型1[,..<字段名n<类型n>]);
    mysqlcreate table MyClass(
    >id int(4) not null primary key auto_increment,
    >name char(20) not null,
    >sex int(4) not null default '0',
    >degree double(16,2));

    describe(desc) tablename; 显示具体的表结构

    desc 表名,或者show columns from 表名

    insert into 表名;插入表数据

    命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[,
      ( 值n )]
    如,往表'person'中插入两条记录:小光,男,31岁,汉族;小明,男,15岁,白族
    mysql> insert into person values ('小光','男','31岁','汉族'),('小明','男','15岁','白族');

    select <字段> from 表名;

    查询所有记录:select * from person;
    查询前2条记录:select * from person by name limit 0,2;

    delete from 表名;删除表数据

    命令:delete from 表名 where 表达式
    例如,mysql> delete from person where name='小明';
    删除表所有数据,mysql> delete * from person;

    update 表名 set 字段=新值,… where 条件;修改表中数据

    例如,mysql> update person set age=30 where name='小光';

    alter table 表名 add字段 类型 其他;在表中增加字段

    例如:在表person中添加了一个字段single(是否单身的意思),类型为char(1),默认值为n
    mysql> use xian;alter table person add single char(1) default 'n'
    或 alter table dbname add column userid int(11) not null primary key
      auto_increment;

    更改表名:
    alter table 原表名称 rename 修改后表的名称;
    rename table 原表名 to 新表名;

    rename table person to hunliantongjibiao;

    更新字段内容
      update 表名 set 字段名 = 新内容
      update 表名 set 字段名 = replace(字段名,'旧内容','新内容');

    更新生日从0824为20140824:
    update birthday set birthday=concat('2014',birthday);

    通过文本方式往数据库里面导入数据:load data local infile 'filepath' into table 表名;

    mysql> LOAD DATA LOCAL INFILE "/data/appdatas/jiayuanvip.txt" INTO TABLE person;

    truncate table 表名;清空表数据,表的记录计数重置
    drop table 表名;删除表,无提示

  • Users(用户权限)相关操作
    授权:
    grant 权限 on databases.tables to username identified by 'passwd'
    如,

    mysql> grant insert,select,update on mysql.* to qunyingliu identified by '51cto20140824'mysql> GRANT ALL PRIVILEGES ON *.* qunyingliu@localhostIDENTIFIED BY '51cto20140824' WITH GRANT OPTION;mysql> GRANT ALL PRIVILEGES ON *.* qunyingliu@"%" IDENTIFIED BY '51cto20140824' WITH GRANT OPTION;

    第一个*表示所有的数据库,第二个*表示所有的表,identified by 后面的是登录用的密码,可以省略,即缺省密码或者空密码。

  • 取消授权:
    revoke all privileges(权限) on *(数据库).*(表) from 帐号@主机;
    如,

      mysql>revove all privileges on *.* from qunyingliu@"%";

    删除用户:
    delete from user where user="帐号" and host="%";
    如,

    delete from user where user="qunyingliu" and host="%";

    数据库/数据表/数据列权限:

    Alter: 修改已存在的数据表(例如增加/删除列)和索引。

    Create: 建立新的数据库或数据表。

    Delete: 删除表的记录。

    Drop: 删除数据表或数据库。

    INDEX: 建立或删除索引。

    Insert: 增加表的记录。

    Select: 显示/搜索表的记录。

    Update: 修改表中已存在的记录。

    全局管理MySQL用户权限:

    file: 在MySQL服务器上读写文件。

    PROCESS: 显示或杀死属于其它用户的服务线程。

    RELOAD: 重载访问控制表,刷新日志等。

    SHUTDOWN: 关闭MySQL服务。

    特别的权限:

    ALL: 允许做任何事(和root一样)。

    USAGE: 只允许登录--其它什么也不允许做。

  • 查看 MySQL 用户权限

1
2
查看当前用户(自己)权限: show grants; 
查看其他 MySQL 用户权限: show grants for qunyingliu@10.2.122.1;
  • mysql服务相关操作

    查看mysql版本与当前时间:
    select version(),current_date;
    修改密码:
    update user set password=password("liuqunying") where user='qunyingliu'; flush privileges(刷新权限)

3.Mysql数据备份与恢复

  • 备份数据库:

    mysqldump -h host -u root -p 数据库名  --default-character-set=utf8[|gbk|latin1] >dbname_backup.sql
  • 备份数据表:

    mysqldump -h host -u root -p 数据库名 表名 >dbname_tablename_backup.sql

只导出插入数据的sql命令:

    mysqldump -h host -u root -p  -t 数据库名 [表名] >insert_data.sql

只导出创建表的sql命令:

    mysqldump -h host -u root -p  -d 数据库名 [表名] >create_table.sql

只导出表内的数据:

    mysqldump -h host -u root -p  -T 导出数据目录 数据库 表名
  • 恢复数据库:恢复的方法有多种,推荐source命令, 可以查看数据导入的进度
    mysql+source命令:

    qunyingliu_host#   mysql -h host -u root -p mysql> use dbname;source dbname_backup.sql;

mysqldump命令:

    qunyingliu_host# mysqldump -u username -p dbname < dbname_backup.sql

mysql命令:

    qunyingliu_host# mysql -u username -p -D dbname < dbname_backup.sql

4.shell环境中mysql的用法

qunyingliu_host#  mysql -h host -uqunyingliu -p51cto20140824 -e "sql语句"qunyingliu_host#  mysqladmin -h myhost -u root -p "sql语句"

5.mysql使用过程中常见问题

  1. 重置root帐号登录密码

      qunyingliu_host# /etc/init.d/mysql stopqunyingliu_host# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &qunyingliu_host# mysql -u root mysql mysql> update user set password=password('qunyingliu@51cto') where user='root'; mysql> flush privileges; mysql> quitqunyingliu_host# /etc/init.d/mysqld restart qunyingliu_host# mysql -uroot -p
  2. select 中加上distinct去除重复字段。

  3. 数据库名为mysql的数据库存放着当前mysql服务器上所有的库表信息。

  4. 退出mysql交互环境:quit或exit

  5. DROP,TRUNCATE 和DELETE *的区别 相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点:
    a.truncate和 delete只删除数据不删除表的结构(定义),drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
    b.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger, 执行的时候将被触发.truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
    c.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动,显然drop语句将表所占用的空间全部释放 truncate语句缺省情况下见空间释放到 minextents个extent,除非使用reuse storage;truncate会将高水线复位(回到最开始).
    d.速度,一般来说: drop> truncate > delete
    e.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及.

使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据/

实际应用: 
delete from table; //删除所有数据 
truncate table; //将auto_increatement调制从0开始,实际就是从1开始

6.grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“ ,grant select on testdb.* to dba@localhost with grant option; 这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

  • 以后还是多在博客《运维者说》总结复习、开始在工作中应用myql命令了 和 不会 不能是接口

  • 顺带温习markdown语法,github版本的markdown语法有点不熟悉

  • 后续会不断更新

##########################

参考引用:
http://blog.fity.cn/post/138/
http://www.jb51.net/article/14200.htm

本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1544178

转载于:https://blog.51cto.com/johnnyr/1600607

mysql修行练级之mysql新手入门常用命令相关推荐

  1. Windchill 二次开发新手入门常用的API

    Windchill_二次开发新手入门常用的API 1.根据零件名称/编码 得到该零件 wt.clients.prodmgmt.WTPartHelper.findPartByName(name) ;   ...

  2. Linux入门-常用命令

    学前建议: 个人认为Linux入门首先学会如何安装并成功登录Linux系统 接下来的入门-常用命令完全可以跟着任意的教程敲一下命令,比如怎么复制粘贴文件.创建文件夹.打包.压缩.解压等,自己多实践多理 ...

  3. linux入门_linux入门-常用命令的使用

    linux入门-常用命令的使用 对于命令行的接触,最开始是window下的cmd,比如查看电脑ip地址.进入某一个文件夹.下载npm模块等等 window cmd window ipconfig 对于 ...

  4. eNSP入门常用命令(一)以及模拟双PC双路由互通

    eNSP入门常用命令(一)以及模拟双PC双路由互通 1. 基本命令 system-view 用户进入系统命令 缩写 syssysname 修改系统名命令interface 参数(接口名称)进入接口命令 ...

  5. mysql修行练级之字符集,数据类型与存储引擎选择

    如何选择合适的存储引擎 几个常用存储引擎的特点 下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式. 特点 Myisam BDB Memory InnoDB Archive ...

  6. 阿里云查看mysql版本_查看mysql版本的四种方法及常用命令

    [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中: ...

  7. 删除mysql数据库中表abc语句_MySQL数据库常用命令大全

    我们经常用到的MySQL数据库常用命令 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mys ...

  8. Linux新手入门常用资料

    首语:为了方便Linux初学者在学习中便于查找资料,这里给出了一部分关于Linux初学相关的资料.所有资料都来自ChinaUnix论坛,请转载者加以注意. Linux新手的学习笔记 关于linux系统 ...

  9. mysql opkg源_opkg包管理工具常用命令

    Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准.常用于路由.交换机等嵌入式设备中,用来管理软件包的安装升级与下载. 常用命令 opkg update 更新可 ...

最新文章

  1. 架空输电线路运行规程_架空输电线路导、地线安全系数的规定
  2. [sharepoint]根据用户名获取该用户的权限
  3. S5P4418/S5P6818核心板EMMC已由原来的4.5版本升级到5.1版本
  4. Linux提权:常用三种方法
  5. Java开发环境搭建详解
  6. 如何快速python入手_初学者怎么才能快速学会Python?
  7. Star Schema完全参考手册读书笔记二
  8. 经典Java-SpringCloud面试题
  9. WEB应用程序--概述
  10. 怎么找网页源文件位置_html网页源代码是什么 如何查看网页源代码经验篇
  11. 寻找矩阵行最大列最小元素
  12. linux怎么卸载home文件系统,Linux系统无法卸载文件系统该怎么办
  13. mysql 报broken pipe_Mysql Broken pipe错误
  14. AERONET数据产品介绍
  15. Android解决滑动冲突
  16. conda创建虚拟环境方法和pqi使用国内镜像源安装第三方库的方法教程
  17. 【搭建OpenCV+Tesseract】
  18. 让div在页面居中(滚动条滚动时也居中)
  19. 流氓软件和骚扰电话是时候该清理下了
  20. 东方财富一面、二面总结(二面凉)

热门文章

  1. python爬取12306_Python 爬取12306火车票
  2. 计算机创建管理员用户名和密码,如何给电脑设置管理员登录密码?
  3. 计算机高级语言与型号是否有关,高级语言与cPU型号无关吗?
  4. 多层神经元感知器模型_使用多层感知器模型对星系进行分类
  5. Docker创建运行多个mysql容器
  6. 欲望、外界、标签、天才、时间、经历、人生目标、后悔、和现实。转自特种兵—AK47
  7. Unity可编程渲染管线系列(六)透明度(裁剪与淡化 Clipping and Fading)
  8. android App 集成 facebook 第三方认证登录
  9. 虚拟磁盘服务错误: 卷大小太大。
  10. 有极性电容和无极性电容区别