[toc]

从今天开始开始MySQL相关方面的东西

上节的内容是MySQL 5.7的安装

这节内容是日常的一些命令

系统为windows 10

数据库为MySQL 5.7.25


## 1. 启停数据库

### 1.1 Windows

**管理员权限**

`net start mysql`

`net stop mysql`

**无需管理员权限**

`mysqladmin -uroot -p shutdown`


### 1.2 Linux

Linux版本的安装后续讲解

`service mysqld stop`

`service mysqld start`



------


## 2. 安装后安全性设置

### 2.1 修改密码

`$ mysql  -uroot -p`
`mysql>set password=password('your_passord');`

### 2.2 删除测试用户和数据库

`mysql>delete from mysql.db where db in('test', 'test\_%');`

`mysql>delete from mysql.user where user='';`

`mysql>delete from mysql.user where authentication_string='';`

### 2.3 修改管理员账号

下面命令将root 改名为system 并赋予本地登录权限

`mysql>update mysql.user set user='system' where user='root' and host='localhost';`

`mysql>grant all on *.* to 'system'@'127.0.0.1' identified by '123456' with grant option;`

`mysql>delete from mysql.user where Host='%' and user='root'; `

`mysql>flush privileges;`

修改后需要使用如下命令登录

`mysql -usystem -p123456 -h 127.0.0.1`


## 3. 新建数据库及用户

如下语句新建test数据库,使用默认的字符集

并建立user1账户,赋予其test数据库的所有权限

%代表所有客户端都可登录

PS:MySQL的账号是 用户名和登录权限的结合,二者在一起构成一个账号

`mysql>create database test;`


`mysql>grant all on test.* to 'user1'@'%' identified by '123456';`

推荐使用如下语句新建用户

`mysql>create user 'user1'@'%';`
`mysql>alter user 'user1'@'%' identified by '123456';`



[image:468 size:orig]

**修改密码**
```
alter user 'user1'@'%' identified by '123456';
alter user user() identified by '123456';
mysqladmin --user=root --password password

```


## 4. 表的相关操作

` mysql -uuser1 -p123456 -h 127.0.0.1`

`mysql>use test`

```
CREATE TABLE IF NOT EXISTS `test`(
   `test_id` INT UNSIGNED AUTO_INCREMENT,
   `test_title` VARCHAR(100) NOT NULL,
   PRIMARY KEY ( `test_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

`insert into test values (1,'first row');`

`select * from test;`


## 5. 变量的查询

### 5.1 系统变量的查询

**查询会话变量**

可通过指定 session 查询会话变量

不加的话默认是会话变量

使用%匹配所有字符

`mysql> show variables like '%read_only%';`



`mysql>  show variables like '%chara%'`

下面方法不支持%通配符

 `mysql> select @@character_set_client;`


**查询全局变量**

可通过 global 查询全局变量


`mysql> show  global variables like '%read_only%';`

`mysql>  show global variables like '%character%'`

### 5.2 查询状态变量

MySQL中的状态变量用户系统监控和性能分析

会话及全局参考上面系统变量

也可使用%通配符

`mysql> show session  status like '%Table_locks_immediate%';`

[image:469 size:orig]

## 6. 修改系统变量


### 6.1 全局变量

修改全局变量影响后续新连接的会话

并不会影响当前会话

数据库重新后失效,如果需要永久保持,请写入配置文件中

`set global character_set_client=utf8;`

[image:470 size:orig]


### 6.2 会话变量

修改会话变量只影响当前会话

默认不加关键字为修改会话变量

`set character_set_client=gbk;`

[image:471 size:orig]