msyql操做100題

1.1.1 開啓MySQL服務

/etc/init.d/mysqld start
使用/etc/init.d/mysqld start命令啓動數據庫的本質就至關於執行mysqld_safe --user=mysql &命令。mysql

1.1.2 檢測端口是否運行

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

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

[root@db02 application]#數據庫

1.1.3 爲MySQL設置密碼或者修改密碼。

mysqladmin -uroot password ‘123456’設置密碼
mysqladmin -u root -p password ‘oldboy123’修改密碼app

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 socket

1.1.5 查看當前數據庫的字符集

mysql> show character set;
mysql> show charset;tcp

 

1.1.6 查看當前數據庫版本

mysql> select version();ide

+-----------+線程

| 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 status\G

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 test\G

mysql> show index from test\G

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 #<==成功登陸

相關文章
相關標籤/搜索