MySQL常用基础操作命令(5.5)

一、MySQL的启动与关闭

1、MySQL的启动与停止的实质

  启动的实质:mysqld_salf --default-file=/data/3306/my.cnf

  停止的实质:mysqladmin uroot -p"密码" -s /date/3306/mysql.sock shutdown

二、MySQL的密码有关问题

1、单实例MySQL的启动 

[root@feitian mysql-5.1.72]# cp support-files/mysql.server /etc/init.d/mysqld
[root@feitian mysql-5.1.72]# chmod 700 /etc/init.d/mysqld
[root@feitian mysql-5.1.72]# /etc/init.d/mysqld restart

2、多实例MySQL的启动

   默认sock文件在编译过程中可以指定路径,如果多实例安装的MySQL启动时要指定sock文件,因为他不知道你初始化数据库时,你的sock文件路径。

   一般启动:

[root@loveyu ~]# /data/3306/mysql start   
#mysql的登录使用的是一个脚本,在文章的上传附件中。               
Starting MySQL...
[root@loveyu ~]# netstat -lnt |grep 3306
tcp     0    0 0.0.0.0:3306      .0.0.0:*       LISTEN

3、为MySQL增加登录密码

   单实例和多是例增加密码的方式一样,只是多实例修改和登录要指定MySQL的sock文件路径

  3.1 多实例MySQL增加密码

[root@loveyu bin]# mysqladmin -uroot -S /data/3306/mysql.sock password 'fenghui' 
[root@loveyu bin]# mysql -S /data/3306/mysql.sock  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
#这时你不能不使用密码登录,使用下面的登录,但是不建议使用此种方式,因为会暴露密码
#mysql -S /data/3306/mysql.sock -uroot -p回车,然后输入密码
[root@loveyu bin]# mysql -S /data/3306/mysql.sock -uroot -p'fenghui'
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.32-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 4、为MySQL用户修改密码

 4.1 用SQL语句修改MySQL的密码

mysql> show databases;
+--------------------+
| Database     |
+--------------------+
| information_schema|
| mysql       |
| performance_schema|
| test       |
+--------------------+
4 rows in set (0.05 sec)

mysql> use mysql
Database changed
mysql> select * from mysql.user\G;
#这里的列表太长,这里就不列出了。
#修改本地root的登录密码。
mysql> update mysql.user set password=password(12345) where user='root' and  host='localhost';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0
#这里注意在SQL语句中修改完密码,要重启MySQL服务

 4.2 在Linux系统中使用mysqladmin修改密码

[root@loveyu ~]# mysqladmin  -uroot -pfenghui password '1234' -S /data/3306/mysql.sock
#这里不需要重启MySQL服务

  注意:这是多实例的修改方法,如果是单实例只需要去掉-S /data/3306/mysql.sock 

5、找回MySQL的登录密码

5.1 单实例找回密码

[root@loveyu ~]# /data/3306/mysql stop
Stoping MySQL...
#停止完成之后需要指定--skip-grant-tables 参数启动,他是忽略授权表登录
[root@loveyu ~]# /application/mysql/bin/mysqld_safe  --skip-grant-tables --user=mysql &
[root@loveyu ~]# mysql -uroot -p   #回车,他会提示你输入密码,你只需要回车就会进入数据库
#登录mysql使用前面的update更改root本地登录的密码,重启mysql服务就完成了。

mariadb 数据库使用 mysql_safe --skip-grant-tables & 启动数据库,也是使用updata修改密码。

5.2 多实例找回密码

    只有启动时和单实例MySQL不一样,其他都一样,多实例MySQL的启动:

[root@loveyu ~]# /application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --skip-grant-tables &
[1] 7787
[root@loveyu ~]# 170808 13:34:40 mysqld_safe Logging to '/data/3307/mysql_oldboy3307.err'.
170808 13:34:40 mysqld_safe Starting mysqld daemon with databases from /data/3307/data
[root@loveyu ~]# mysql -uroot -p -S /data/3307/mysql.sock 
#登录之后,用updata修改本地root的登录密码,重新启动。

三、SQL语句的定义和分类

1、什么是SQL?

    SQL英文全称Structured Query Language,中文意思结构化查询语言,他是一中对关系型数据库的数据进行定义和操作的语言方法。SQL是一种数据库查询和程序设计语言。

2、SQL的分类

DQC(Date Query Language) 数据查询语言 数据检索语句,关键字常见的有 SELECT

DML(Data Manipulation 

Language)

数据操纵语言 关键字,INSERT、UPDATA、DELETE等
TPL (不常用) 事物处理语言 他的语句确保DML语句影响的表能及时更新
DCL(Data Control Language) 数据控制语言 关键字GRANT、REVOKE

DDL (Data definition

Language) 

数据定义语言 关键字CREATE、DROP
CCL(Cursor Control Language) 指针控制语言 UPDATA WHERE CURRENT 用于一个或多个表

  我们常用的SQL分类

SQL分类: 
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) 
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) 
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

四、MySQL数据库常见的管理和应用

1、数据库的创建查看删除和连接   

1.1创建命令语法   

  CREATE database <名称>;  

mysql> CREATE DATABASE feitian;
Query OK, 1 row affected (0.03 sec)
mysql> SHOW DATABASES ;                  
+--------------------+
| Database           |
+--------------------+
| information_schema |
| feitian            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

1.2 创建一个GBK字符集的数据库     

mysql> CREATE DATABASE GBK DEFAULT CHARACTER  SET GBK COLLATE gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)

1.3 创建一个utf-8字符集的数据库   

mysql> CREATE DATABASE UTF DEFAULT CHARACTER  SET utf8  COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
#数据库的名字叫UTF

1.4 显示数据库

mysql> CREATE DATABASE UTF DEFAULT CHARACTER  SET utf8  COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| feitian            |
| gbk                |
| mysql              |
| performance_schema |
| test               |
| utf                |
+--------------------+
7 rows in set (0.00 sec)
mysql> USE gbk;
Database changed
#查看当前所在的表,相当于linux中的pwd.
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| gbk        |
+------------+
1 row in set (0.00 sec)
#查看当前登录的用户
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
#查看当前时间
mysql> select now();
+---------------------+
| now()       |
+---------------------+
|2017-08-08 14:21:10 |
+---------------------+
1 row in set (0.00 sec)
#查看数据库名称中含有e的。
mysql> SHOW DATABASES LIKE '%e%';
+--------------------+
| Database (%e%)  |
+--------------------+
| information_schema|
| feitian      |
| performance_schema|
| test       |
+--------------------+
4 rows in set (0.00 sec)

1.5删除数据库 

mysql> DROP DATABASE GBK;
Query OK, 0 rows affected (0.06 sec)
#删除名字为GBK的数据库

1.6连接数据库

mysql> use mysql;
Database changed
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

2、数据库中用户的创建和删除和授权

2.1 删除用户

mysql> select user,host from mysql.user; 
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
|      | loveyu    |
| root | loveyu    |
+------+-----------+
6 rows in set (0.00 sec)
mysql> drop  user 'root'@'loveyu';
Query OK, 0 rows affected (0.00 sec)

注意:如果含有大写字母的名称用drop删除不了可以使用下面的命令

delet from mysql.user where user='LALA' and hoset='localhost'

2.2 创建用户和对用户授权和查看用户的权限

2.2.1 创建用户和授权一步完成

mysql> GRANT ALL ON mysql.* TO 'feitian'@localhost IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)
#创建一个用户feitian只能在本地登录,密码是1234,对mysql库中的表有所有权利

2.2.2 先创建用户在授权

mysql> CREATE USER 'lala'@'172.25.254.231'  IDENTIFIED  BY '1234';
Query OK, 0 rows affected (0.00 sec)
#创建用用户,只能在172.25.254.231这台主机登录,密码是1234.
mysql> GRANT ALL ON *.*  TO 'lala'@'172.25.254.231';
Query OK, 0 rows affected (0.00 sec)
给lala这个用户所有权限操作整个数据库。

2.3查看用户的授权

mysql> show grants for 'lala'@'172.25.254.231';
+---------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                            |
+---------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'lala'@'172.25.254.231' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' |
+---------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

用户可授权的所有权限:

mysql> REVOKE DELETE ON *.* from 'lala'@'172.25.254.231';
Query OK, 0 rows affected (0.00 sec)
#收回一个删除的权利,在次查看改用户的权利,就得到所有权利
mysql> show grants for 'lala'@'172.25.254.231'\G;
*************************** 1. row ***************************
Grants for [email protected]: GRANT SELECT, INSERT, UPDATE, CREATE, DROP, RELOAD, 
SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES,
 LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE,
 ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'lala'@'172.25.254.231' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
1 row in set (0.00 sec)