mysql数据库管理

用户管理

1)用户与授权
新建用户
CREATE USER 'y1905'@'%' identified by '123456';
select host,user,password from mysql.user;
删除用户
drop user 'y1905'@'%';
重命名用户
RENAME USER 'myslave'@'192.168.9.%' TO 'y1905'@'%';
给用户设置密码
当前用户修改密码
set password=password("123456");
其他用户修改密码
set password for 'y1905'@'%'=password('pwd123');
忘记密码
a、停止服务
systemctl stop mysqld
b、跳过密码直接登录
mysqld_safe --skip-grant-tables&
c、登录
[root@www ~]# mysql
mysql> update mysql.user set password=password("111") where user='root';
mysql> flush privileges;
d、kill进程myslqd
e、重启
systemctl start mysqld
f、验证
[root@www ~]# mysql -uroot -p111

授权

设置权限
mysql> grant select,update on mmm.* to 'testa'@'192.168.9.%' identified by '123';
查看授权
show grants for testa@'192.168.9.%';
撤销权限
revoke update on mmm.* from 'testa'@'192.168.9.%';

权限列表

权限 说明
All 设置所有权限
ALTER 允许使用ALTER TABLE
CREATE 允许使用CREATE TABLE
CREATE USER 允许使用CREATE USER
DELETE 允许使用DELETE
INDEX 允许使用INDEX
INSERT 允许使用INSERT
SELECT 允许使用SELECT
UPDATE 允许使用UPDATE
DROP 允许使用DROP
REPLICATION SLAVE 允许从主服务器中读取二进制文件
SHOW DATABASES 允许显示所有数据库

日志管理

vi /etc/my.cnf
log-error=/usr/local/mysql/data/my_error.log   错误日志存放位置
general_log = ON    #打开通用日志,默认为OFF
general_log_file = /usr/local/mysql/data/mysql_general.log
log_bin = y2002-bin   # 如果没有写=右面的内容,自动生成主机名***-bin.00000*的日志
注意:mysql必须对指定的文件夹有读写权限,否则无法操作文件。

1)错误日志
主要记录当mysql启动和停止时,以及在运行过程中发生任何错误时的相关信息
默认保存在mysql安装路径data文件夹下,后缀名是.err
2)通用日志
通用日志用来记录mysql的所有连接和语句,默认是关闭的
3)二进制日志
二进制日志用来记录所有更新了数据或已经潜在更新了数据的语句,记录了数据的更改
默认是关闭的
二进制文件使用mysqlbinlong命令查看,格式为 msyqlbinlog mysql-bin.000001
4)慢查询日志
慢查询日志记录所有执行时间超过 long_query_time 秒的SQL语句,用于找到哪些查询语句执行时间长,以便对其进行优化。
默认是关闭的
通过配置文件更改:
vi  /etc/my.cnf
slow_query_log=ON     开启慢查询日志
slow_query_log_file=mysql_slow_query.log  指定存放慢查询日志路径,
如果没有指定绝对路径,默认保存在data目录下
long_query_time=1   设置超时时间

mysql> show variables like "%slow%";   查看慢查询功能是否开启
+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | OFF         状态为OFF                      |
| slow_query_log_file       | /usr/local/mysql/data/my-slow.log |
+---------------------------+-----------------------------------+
5 rows in set (0.00 sec)

mysql> set global slow_query_log=ON;    开启慢查询功能,临时
Query OK, 0 rows affected (0.04 sec)

mysql> show variables like "%slow%";
+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | ON                                |
| slow_query_log_file       | /usr/local/mysql/data/my-slow.log |
+---------------------------+-----------------------------------+
5 rows in set (0.00 sec)


mysql> show variables like "long_query_time";   查看超时时间
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |   #默认10s
+-----------------+-----------+
1 row in set (0.00 sec)

mysql> set global long_query_time=5;  #设置慢查询的时间为5s
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |   #没有变
+-----------------+-----------+
1 row in set (0.00 sec)

mysql> show variables like "long_query_time";
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 5.000000 |   #重新登录
+-----------------+----------+
1 row in set (0.00 sec)



验证

mysql> select sleep(6);

vi my-slow.log 
/usr/local/mysql/bin/mysqld, Version: 5.6.36-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 191012 19:42:59
# User@Host: root[root] @ localhost []  Id:     2
# Query_time: 6.000773  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1570880579;
select sleep(6);

数据乱码解决

乱码产生的原因

在计算机中任何数据都是以二进制存储的,要存储一个字符就要对他进行编码,用一个二进制数与其对应,这种对应的规则的集合叫作‘字符集’。
Mysql服务器使用中经常会有乱码产生,主要有以下几种原因:

  • 服务器系统字符设置问题
  • 数据表语系设置的问题
  • 客户端连接语系的问题
    实际对乱码问题原因的简单解释就是:在使用、存储数据的时候,各个环节设置的字符集如果不同,就会产生乱码

乱码解决方法

修改字符集

  • 创建数据库时指定
    CREATE DATABASE test CHARSET utf8;
  • 创建数据表时指定
    create table idtest(id int(10)) default charset=gb2312
    show table status 可查看字符集
  • 修改MySQL配置文件
    通常都是使用修改MySQL配置文件的方法,使数据库中所有存储内容都是utf8的格式。
    修改MySQL配置文件/etc/my.cnf
    添加[client]部分,并加入:
    default-character-set = utf8
    重启后生效,只修改这一处,之后创建数据库和数据表都不需要再单独指定字符集。

你可能感兴趣的:(mysql)