zoukankan      html  css  js  c++  java
  • msyql操作100题

    1.1.1 开启MySQL服务

    /etc/init.d/mysqld start
    使用/etc/init.d/mysqld start命令启动数据库的本质就相当于执行mysqld_safe --user=mysql &命令。

    1.1.2 检测端口是否运行

    [root@db02 application]# netstat -lntup| grep 3306

    tcp        0      0 :::3306                     :::*                        LISTEN      45675/mysqld       

    [root@db02 application]#

    1.1.3 为MySQL设置密码或者修改密码。

    mysqladmin -uroot password ‘123456’设置密码
    mysqladmin -u root -p password ‘oldboy123’修改密码

    1.1.4 登陆MySQL数据库。

    mysql -uroot -poldboy123 -h 127.0.0.1
    mysql -uroot -poldboy123 --protocol TCP
    mysql -uroot -poldboy123 -S /application/mysql/tmp//mysql.sock

    1.1.5 查看当前数据库的字符集

    mysql> show character set;
    mysql> show charset;

    1.1.6 查看当前数据库版本

    mysql> select version();

    +-----------+

    | version() |

    +-----------+

    | 5.6.36    |

    +-----------+

    1 row in set (0.04 sec)

    mysql> select @@version;

    +-----------+

    | @@version |

    +-----------+

    | 5.6.36    |

    +-----------+

    1 row in set (0.18 sec)

     

    mysql>
    mysql> status

    --------------

    mysql  Ver 14.14 Distrib 5.6.36, for linux-glibc2.5 (x86_64) using  EditLine wrapper

     

    Connection id:      11

    Current database:   oldboy

    Current user:       root@localhost

    SSL:            Not in use

    Current pager:      stdout

    Using outfile:      ''

    Using delimiter:    ;

    Server version:     5.6.36 MySQL Community Server (GPL)

    Protocol version:   10

    Connection:     Localhost via UNIX socket

    Server characterset:    latin1

    Db     characterset:    latin1

    Client characterset:    utf8

    Conn.  characterset:    utf8

    UNIX socket:        /tmp/mysql.sock

    Uptime:         2 hours 44 min 34 sec

     

    Threads: 1  Questions: 41  Slow queries: 0  Opens: 68  Flush tables: 1  Open tables: 61  Queries per second avg: 0.004

    --------------

     

    mysql>
    [root@db02 scripts]# mysql -V

    mysql  Ver 14.14 Distrib 5.6.36, for linux-glibc2.5 (x86_64) using  EditLine wrapper

    [root@db02 scripts]#
    [root@db02 scripts]# mysql --help| grep Distrib

    mysql  Ver 14.14 Distrib 5.6.36, for linux-glibc2.5 (x86_64) using  EditLine wrapper

    [root@db02 scripts]#
    mysql> show variables like "%version%";
    +-------------------------+------------------------------+

    | Variable_name           | Value                        |

    +-------------------------+------------------------------+

    | innodb_version          | 5.6.36                       |

    | protocol_version        | 10                           |

    | slave_type_conversions  |                              |

    | version                 | 5.6.36                       |

    | version_comment         | MySQL Community Server (GPL) |

    | version_compile_machine | x86_64                       |

    | version_compile_os      | linux-glibc2.5               |

    +-------------------------+------------------------------+

    7 rows in set (0.34 sec)

    1.1.7 查看当前登录的用户。

    mysql> select user();

    1.1.8 查看内存进程线程监控信息;

    mysql> show engine innodb statusG

    1.1.9 创建GBK字符集的数据库oldboy,并查看已建库完整语句

    mysql> create database oldboy charset gbk;
    mysql> show create database oldboy;

    1.1.10 创建用户oldboy,使之可以管理数据库oldboy

    mysql> create user oldboy@'172.16.1.%' identified by '123456';
    grant all on oldboy.* to oldboy@'172.16.1.%' identified by '123456';

    1.1.11 查看创建的用户oldboy拥有哪些权限

    show grants for oldboy@'172.16.1.%'G

    1.1.12 查看当前数据库里有哪些用户

    select user ,host from mysql.user;

    1.1.13 进入oldboy数据库

    use oldboy

    1.1.14 创建一innodb GBK表test,字段id int(4)和namevarchar(16)

    mysql> create table test ( id int(4) not null , name varchar(16) default null ) engine=Innodb default charset=gbk;

    1.1.15 查看建表结构及表结构的SQL语句

    mysql> show create table test;

    mysql> desc test;

    1.1.16 插入一条数据“1,oldboy”

    insert into test(id,name) values(1,'oldboy');

    1.1.17 再批量插入2行数据 “2,老男孩”,“3,oldboyedu”

    mysql> insert into test values(3,'老男孩'),(4,'olodboyedu');

    1.1.18 查询名字为oldboy的记录

    mysql> select * from test where name='oldboy';

    1.1.19 把数据id等于1的名字oldboy更改为oldgirl

    mysql> update test set name='oldgirl' where name='oldboy';

    1.1.20 在字段name前插入age字段,类型tinyint(2)

    mysql> alter table test add age tinyint(2) after id;

    1.1.21 不退出数据库,完成备份oldboy数据库

    ! mysqldump -uroot -p123456 -S /tmp/mysql.sock  --events -B oldboy mysql >/opt/bak_$(date +%F).sql

    1.1.22 删除test表中的所有数据,并查看

    truncate table test;
    delete from test;

    1.1.23 删除表test和oldboy数据库并查看

    drop table test;
    drop database oldboy;

    1.1.24 不退出数据库恢复以上删除的数据

    mysql -uroot -p123456 -S /tmp/mysql.sock </opt/bak_2017-11-20.sql

    1.1.25 把库表的GBK字符集修改为UTF8。

    1.先导出表中数据

    mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock -B oldboy >/opt/test.sql

    egrep -v "^$|--|/" /opt/test.sql #<==可以看到这一行:ENGINE=MyISAM DEFAULT CHARSET=gbk;

    2.修改字符集

    sed -i 's#CHARSET=gbk#CHARSET=utf8#g' /opt/test.sql

    egrep -v "^$|--|/" /opt/test.sql #<==验证:) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    3.恢复数据

    在sql文件中添加一条 set names utf8;并恢复

    mysql -uroot -poldboy123 -S /data/3306/mysql.sock  oldboy </opt/test.sql

    1.1.26 把id列设置为主键,在Name字段上创建普通索引。

    alter table test add primary key (id);

    alter table test add index index_name (name);

    1.1.27 在字段name后插入手机号字段(shouji),类型char(11)。

    mysql> alter table test add shouji char(11) after name;

    1.1.28 所有字段上插入2条记录(自行设定数据)

    mysql> insert into test values(5,'12','ll','123456'),(6,'13','kaka','5236');

    1.1.29 在手机字段上对前8个字符创建普通索引。

    mysql> alter table test add index index_shouji (shouji(8));

    1.1.30 查看创建的索引及索引类型等信息。

    mysql> desc test;

    mysql> show create table testG

    mysql> show index from testG

    mysql>

    1.1.31 删除Name,shouji列的索引。

    mysql> alter table test drop index index_shouji;
    mysql> alter table test drop index index_name;

    1.1.32 对Name列的前6个字符以及手机列的前8个字符组建联合索引。

    alter table  test add index index_name_shouji(name(6),shouji(8));

    1.1.33 查询手机号以135开头的,名字为oldboy的记录(提前插入)。

    mysql> select * from test where name='oldboy' and shouji like '135%';

    1.1.34 查询上述语句的执行计划(是否使用联合索引等)。

    mysql> explain select * from test where name='oldboy' and shouji like '135%'G

    1.1.35 把test表的引擎改成MyISAM。

    mysql> alter table test engine=myisam;

    1.1.36 收回oldboy用户的select权限。

    revoke select  on oldboy.* from oldboy@'172.16.1.%';

    1.1.37 删除oldboy用户。

    drop user oldboy@'172.16.1.%';

    1.1.38 删除oldboy数据库。

    drop database oldboy

    1.1.39 使用mysqladmin关闭数据库。

    mysqladmin -uroot -poldboy123 shutdown

    1.1.40 MySQL密码丢了,请找回?

    [root@db01 ~]# netstat -tunlp|grep 3306 #<==先查看服务是否正常

    tcp        0      0 0.0.0.0:3306            0.0.0.0:*          LISTEN      62358/mysqld

    [root@db01 ~]# kill 62358 #<==kill掉进程的pid

    [root@db01 ~]# netstat -tunlp|grep 3306 #<==mysql进程已关闭

    [root@db01 ~]# mysqld_safe --help #<==利用mysqld_safe命令指定配置文件,跳过授权表来破密码

    [root@db01 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 >/dev/null &

    [root@db01 ~]# mysql -S /data/3306/mysql.sock #<==无密码登录进多实例3306

    mysql> select user,host,password from mysql.user where user='root' and host='localhost';

    +------+-----------+-------------------------------------------+

    | user | host      | password                                  |

    +------+-----------+-------------------------------------------+

    | root | localhost | *FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515 |

    +------+-----------+-------------------------------------------+

    1 row in set (0.00 sec)#<==先看下mysql库,user表里的字段内容

    mysql> update mysql.user set password=PASSWORD("123456") where user='root' and host='localhost'; #<==利用update命令来更新root@localhost用户的密码

    mysql> flush privileges; #<==记得刷新授权表,否则不会立马生效的

    Query OK, 0 rows affected (0.00 sec)

    [root@db01 ~]# sed -i 's#mysql_pwd="oldboy456"#mysql_pwd="oldboy123"#g' /data/3306/mysql

    [root@db01 ~]# grep mysql_pwd= /data/3306/mysql #<==修改启动脚本的密码,才能利用命令来停止服务

    mysql_pwd="oldboy123"

    [root@db01 ~]# /data/3306/mysql stop #<==先停掉服务,因为有跳过授权表的参数在

    Stoping MySQL...

    [1]+  Done   mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 > /dev/null

    [root@db01 ~]# /data/3306/mysql start #<==启动

    Starting MySQL...

    [root@db01 ~]# ss -tunlp|grep 3306 #<==侦听正常

    tcp    LISTEN     0      600          *:3306        *:*      users:(("mysqld",66695,12))

    [root@db01 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock #<==成功登录

  • 相关阅读:
    八卦——朋友的老公有外遇
    吃,玩——幸福的上海一天
    婚礼——金茂群楼豪华婚礼
    吃狂吃大喜九
    玩——苏州粗体验
    XCF之原形
    快速类型判定
    ReaderWriterLockSlim使用注意事项
    WCF服务端基于配置的实现——路由
    Opera使用心得
  • 原文地址:https://www.cnblogs.com/zdqc/p/9510320.html
Copyright © 2011-2022 走看看