1、登錄數據庫
(1)、單實例
mysql -uroot -poldboy
(2)、多實例
mysql -uroot -poldboy -S /data/3306/mysql.sock
2、查看數據庫版本及當前登錄用戶是什么
mysql> select version(); 查看版本
mysql> select user(); 查看用戶
3、創建GBK字符集的數據庫oldboy,並查看已建庫的完整語句
mysql> create database oldboy character set gbk collate gbk_chinese_ci;
mysql> show create database oldboy\G
4、創建用戶oldboy,使之可以管理數據庫oldboy
第一種方法:
mysql> grant all on oldboy.* to oldboy@’localhost’ identified by ‘123456’;
mysql> select user,host from mysql.user;
第二種方法:
mysql> grant all on oldboy.* to oldboy@’192.168.1.%/255.255.255.0’ identified by ‘123456’;
mysql> select user,host from mysql.user;
第三種方法:
mysql> create user ‘abc’@’localhost’ identified by ‘123456’;
mysql> grant all on oldboy.* to ‘abc’@’localhost’;
5、查看創建的用戶oldboy擁有哪些權限
mysql> show grants for abc@localhost;
mysql> show grants for oldboy@localhost;
mysql> show grants for oldboy@localhost\G
6、查看當前數據庫有哪些用戶
mysql> select user,host from mysql.user;
7、進入oldboy數據庫
mysql> use oldboy
8、創建一innodb引擎字符集為GBK表test,字段為id和namevarchar(16),查看建表結構及SQL語句
mysql> create table test(
-> id int(4),
-> name varchar(16)
-> )ENGINE=innodb default charset=gbk;
Query OK, 0 rows affected (0.02 sec)
第一種方法:
mysql> desc test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
第二種方法:
mysql> show columns from test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
查看表權限
mysql> show create table test;
9、插入一條數據 1,oldboy
mysql> insert into test values(1,'oldboy');
mysql> select * from test;
+------+--------+
| id | name |
+------+--------+
| 1 | oldboy |
+------+--------+
1 row in set (0.00 sec)
10、批量插入數據 2,老男孩,3,etiantian。ç要求中文不能亂碼
mysql> insert into test values(2,'老男孩'),(3,'etiantian');
Query OK, 2 rows affected (0.07 sec)
Records: 2 Duplicates: 0 Warnings: 0
查看創建情況
mysql> select * from test;
+------+-----------+
| id | name |
+------+-----------+
| 1 | oldboy |
| 2 | 老男孩 |
| 3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)
11、查詢插入的所有記錄,查詢名字為oldboy的記錄。查詢id大於1的記錄。
(1)第一種方法
mysql> select * from test;
+------+-----------+
| id | name |
+------+-----------+
| 1 | oldboy |
| 2 | 老男孩 |
| 3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)
(2)第二種方法
mysql> select * from test where name='oldboy';
+------+--------+
| id | name |
+------+--------+
| 1 | oldboy |
+------+--------+
1 row in set (0.00 sec)
(3)第三種方法
mysql> select * from test where id>1;
+------+-----------+
| id | name |
+------+-----------+
| 2 | 老男孩 |
| 3 | etiantian |
+------+-----------+
2 rows in set (0.00 sec)
12、把數據id等於1的名字oldboy更改為oldgirl
mysql> update test set name='oldgirl' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
查看修改情況
mysql> select * from test;
+------+-----------+
| id | name |
+------+-----------+
| 1 | oldgirl |
| 2 | 老男孩 |
| 3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)
13、在字段name前插入age字段,類型tinyint(2)
mysql> alter table test add age tinyint(2) after id;
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> desc test;
+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+| id | int(4) | YES | | NULL | |
| age | tinyint(2) | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
14、備份oldboy庫及MySQL庫
mysqldump -uroot -poldboy -S /data/3306/mysql.sock --events -B oldboy mysql >/opt/mysql_back.sql
cat /opt/mysql_back.sql
15、刪除表中的所有數據,並查看
第一種mysql> delete from test;
第二種mysql> truncate table test;
mysql> select * from test;
Empty set (0.00 sec)
16、刪除表test和oldboy數據庫並查看
mysql> drop table test; 刪除表
mysql> drop database test; 刪除庫
17、Linux命令行恢復以上刪除的數據
mysql -uroot -poldboy -S /data/3306/mysql.sock </opt/mysql_back.sql
18、把GBK字符集修改為UTF8(可選,注意,此題有陷阱)
mysql> show variables like 'character_set_%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.49/share/charsets/ |
由配置文件設置
+--------------------------+-------------------------------------------+8 rows in set (0.00 sec)
思想:
1、停止MySQL,單例可以使用/etc/init.d/mysqld(編譯的話需要設置,yum安裝就會出現)
多實例:/data/3306/mysql shutdown或者是/data/3306/mysql stop 這個需要我們自己寫腳本。官方有參考
2、cp /etc/my.cnf /etc/my.cnf.bak,修改前做備份,這是個好習慣。
修改my.cnf
vi /etc/my.cnf
在[client]下添加,client為控制客戶端的,沒試過,沒有的可以不需要加。
default-character-set=utf8
在[mysqld]下添加,mysqld為控制服務器端的,改過了,OK。
default-character-set=utf8
3.重啟:yum安裝可以使用/etc/init.d/mysqld start 多實例要使用/data/3306/mysql restart(多實例詳細介紹見下一篇文章)
4.show variables like ‘%char%’;查看
19、MySQL密碼丟了,如何找回實戰?
單實例
/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables --user=mysql &
mysql
修改完密碼重啟
/etc/init.d/mysqld restart
多實例
/data/3306/mysql stop 無法停止
killall mysqld
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables --user=mysql &
update mysql.user set password=password('oldboy456') where user='root' and host='localhost';
flush privileges;
mysql 登錄
mysqladmin -uroot -poldboy shutdown
/etc/init.d/mysqld start
原創申明:老男孩教育公眾號文章均出自老男孩教育老師及學員原創,轉載請聯系miaokm@oldboyedu.com。
