备忘录 | MySQL最最最常用操作

MySql操作笔记

基本操作

本地登录
mysql -uusername -ppasswd

//查看当前连接所有的数据库
show databases;
//进入数据库
use estore;
//显示本数据库中所有的表
show tables;

安装rpm(mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar)

官方下载网站:https://dev.mysql.com/downloads/mysql/

image.png
image.png

download


右键 No thanks,保存下载链接

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar

查看是否安装:
rpm -qa|grep mysql

卸载:
rpm -e xxx --nodeps

//使用rpm -ivh命令进行安装
mysql-community-common-5.7.9-1.el7.x86_64.rpm
mysql-community-libs-5.7.9-1.el7.x86_64.rpm --(依赖于common)
mysql-community-client-5.7.9-1.el7.x86_64.rpm --(依赖于libs)
mysql-community-server-5.7.9-1.el7.x86_64.rpm --(依赖于client、common)

初始化数据库,初始密码在/var/log/mysqld.log

service mysqld start

安装常见问题

  • 新安装的MySQL启动不起来

      cd /var/lib/mysql
      chown mysql *;
      chgrp mysql *;
      chmod ug+rwx *
    
  • 安装失败:

      warning: mysql-community-server-5.7.17-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
      error: Failed dependencies:
          libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.17-1.el6.x86_64
          libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.17-1.el6.x86_64
          libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.17-1.el6.x86_64
    

    解决方法:yum install numactl

  • centos 7 安装失败
    报错信息:mariadb-libs is obsoleted by mysql-community-libs-5.7.9-1.el7.x86_64
    分析:Centos默认安装mariadb-libs,卸载即可正常安装

         rpm -e $mariadb --nodeps 
    

首次安装设置root密码

mysql –uroot -p  使用默认密码登录
set password =password('123.'); 修改密码

可以在mysql的log日志中查看默认密码(vim /var/log/mysqld.log 需要首先启动服务 service mysqld start)

默认目录

usr/bin/mysql 是指:mysql的运行路径
var/lib/mysql 是指:mysql数据库文件的存放路径
usr/lib/mysql 是指:mysql的安装路径

允许远程登录

  1. 授权用户root使用密码passwd从任意主机连接到mysql服务器:

     GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
     flush privileges;
    
  2. 授权用户root使用密码passwd从指定ip为10.1.0.45的主机连接到mysql服务器:
    代码如下:

     GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.1.0.45' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
     flush privileges;   
    

中文乱码问题

show variable like '%character%'  查看字符编码

修改配置文件
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8

代码连接
jdbc:mysql://localhost:3306/crawler?useUnicode=true&characterEncoding=utf-8&useSSL=false

命令行读取用户名、密码

配置文件my.cnf添加以下配置

[client]
host=localhost
user=root
password='yyy666'

数据库导出

1、导出整个数据库(包括数据)
mysqldump -uusername -p estore > estore.sql
2、导出数据库结构(只有建表语句,不含数据)
mysqldump -uusername -p -d estore > estore.sql
3、导出数据库中的某张数据表(包含数据)
mysqldump -uusername -p estore product > product.sql
4、导出数据库中的某张数据表的表结构(只有建表语句,不含数据)
mysqldump -uusername -p -d estore product > product.sql

数据库导入

# Linux直接操作
mysql -uusername -p estore < estore.sql
# 进入mysql命令行,执行mysql命令
source estore.sql

# 获取特定表结构
sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `test`/!d;q' database-20180812020000.sql > test.sql 

grep 'INSERT INTO `test`'database-20180812020000.sql > test.sql

异常处理

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.tableName.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

配置文件中添加配置

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

设置密码复杂度

mysql> select @@validate_password_policy;
mysql> set global validate_password_policy=0;

创建用户、授权

创建用户

# 创建用户并允许localhost, 127.0.0.1访问
create user 'test'@'localhost' identified by '123456';
# 创建用户并允许外网访问
create user 'test'@'%' identified by '123456';  
# 生效
flush privileges;

对数据库授权

# 授权用户对testdb的所有权限,本地访问
grant all privileges on `testdb`.* to 'test'@'localhost' identified by '123456';
# 授权用户对testdb的所有权限,外网访问
grant all privileges on `testdb`.* to 'test'@'%' identified by '123456';  
# 生效
flush privileges;

修改默认的数据文件目录

# 设置/data/下mysql文件夹的属主和权限
chown -R mysql:mysql /data/mysql

查看连接数

# 当前连接数
show status like 'Threads%';
# IP连接数
select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;
# 查看连接状态
 show full processlist;
# 查看最大连接数
show variables like '%max_connections%';
# 修改最大连接数
set GLOBAL max_connections = 200;

# 配置文件配置,重启不会失效
max_connections=1000

连接超时设置

# 查看当前超时设置
show variables like "%timeout%";
# 查看wait_timeout(全局变量)
show global variables like 'wait_timeout';
# 临时更改
set global wait_timeout=10;

配置文件配置

[mysqld]
wait_timeout=10

表操作命令

# 查看表结构
desc table_name 

# 修改字段的数据类型
ALTER TABLE table_name MODIFY COLUMN col_name VARCHAR(50);

# 字符替换
update tb_room set room_info = replace(room_info,'-','');

日志查看

在/etc/my.cnf文件中【mysqld】下加上:

 server-id = 1 (在整个Mysql集群中保证唯一)
 log-bin = binlog 
 log-bin-index = binlog.index


# 查看二进制文件是否开启
SHOW VARIABLES LIKE'log_bin'
# 查看所有二进制日志文件
SHOW BINARY LOGS;
# 查看当前二进制日志文件的名称
SHOW MASTER STATUS; 

慢查询

# 查看是否开启
show variables like 'slow_query%';
# 查询超过多少秒才记录
show variables like 'long_query_time';

# 将slow_query_log 全局变量设置为“ON”状态
set global slow_query_log='ON';

# 设置慢查询日志存放的位置
set global slow_query_log_file='/data/logs/mysql/slow.log';

# 查询超过1秒就记录
set global long_query_time=5;

配置文件方式

[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1   

查看二进制文件

# --no-dafaults
mysqlbinlog --no-defaults --start-datetime='2018-08-18 16:21:00' --stop-datetime='2018-08-18 16:35:00' -d 数据库名 mysql-bin.000003

mysqlbinlog --no-defaults --start-position=1072696115 --stop-position=1072696117 -d 数据库名 mysql-bin.000003

# --base64-output=decode-rows -v  解码处理
mysqlbinlog --no-defaults --start-position=1072696115 --stop-position=1072696117 -d 数据库名 --base64-output=decode-rows -v mysql-bin.000003 

# 个人Mac主机查看binlog
/usr/local/mysql-5.7.13-osx10.11-x86_64/bin/mysqlbinlog --start-datetime='2018-08-18 16:21:00' --stop-datetime='2018-08-18 16:23:00' -d 数据库名 ~/Downloads/mysql-bin/mysql-bin.000002 > ~/Downloads/mysql-bin/my.sql

# 数据恢复,起止时间点
mysqlbinlog --no-defaults --start-datetime='2018-08-12 02:05:00' --stop-datetime='2018-08-18 16:22:13' -d 数据库名 mysql-bin.000002 | mysql -uroot -p
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352