这样就可以进入数据库不用授权了 mysql -uroot,修

作者: www.9159.com  发布:2019-09-25

今日是MySQL的第四篇,难度会稍微加大,加油!

Linux学习笔记(MySql操作)

忘记MySql密码:

编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数 skip-grant

www.9159.com 1

重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot

修改相应用户密码 use mysql;

update user setpassword=password('密码') where user='root';

www.9159.com 2

flushprivileges; (刷新)

最后修改/etc/my.cnf 去掉 skip-grant, 重启mysql服务

 

查看root用户:

mysql -uroot -p密码 -e "use mysql;select user,host from user where user='root';"

www.9159.com 3

 

mysq的命令历史:/root/.mysql_history

这样不安全,先删除这个文件,然后指向黑洞,就不会产生命令历史了

www.9159.com 4

 

mysql:

-h:加ip

-S:可以使用指定的sock文件

-P:加端口号

-u:加用户名

-p:加密码

show databases;:显示数据库

use database;:选择数据库

show tables;:查看数据库中的表

 

查看都有哪些库 show databases;
查看某个库的表 use db; show tables;
查看表的字段 desc tb;
查看建表语句 show create table tb;
当前是哪个用户 select user();
当前库 select database();
创建库 create database db1;
创建表 create table t1 (`id`int(4), `name` char(40));
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数

show variables like '%timeout%';

www.9159.com 5

set global table_open_cache= 128;

www.9159.com 6
查看mysql队列

showprocesslist; (相当于ps)

www.9159.com 7
创建普通用户并授权

grant all on *.* to user identified by '密码';

grant all on db1.* to 'user'@'10.0.2.100' identified by '密码';

grant all on db1.* to 'user3'@'%' identified by '密码';
更改密码

UPDATE mysql.user SET password=PASSWORD("newpwd")WHERE user='username' ;
查询

select count(*) from mysql.user;

select * from mysql.db;

select * from mysql.db where host like '10.0.%';
插入

update db1.t1 set name='*****' where id=1;
清空表

truncate table db1.t1;
删除表

drop table db1.t1;
删除数据库

drop database db1;
修复表

repair table tb1 [use_frm];(通过/data/www/数据库名/这个文件下面的文件修复)

mysql的备份和恢复:

备份 mysqldump -uroot -p db > 1.sql

-d:只是备份创建表的语句
恢复 mysql -uroot -p db < 1.sql
只备份一个表 mysqldump -uroot -p dbtb1 > 2.sql
备份时指定字符集mysqldump -uroot -p --default-character-set=utf8 db > 1.sql
恢复也指定字符集 mysql -uroot -p --default-character-set=utf8 db < 1.sql

 

忘记MySql密码: 编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数 skip-grant 重启数据库服务,这样就可以进入数据...

Linux学习笔记(MySql操作)

忘记MySql密码:

编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数 skip-grant

www.9159.com 8

重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot

修改相应用户密码 use mysql;

update user setpassword=password('密码') where user='root';

www.9159.com 9

flushprivileges; (刷新)

最后修改/etc/my.cnf 去掉 skip-grant, 重启mysql服务

 

查看root用户:

mysql -uroot -p密码 -e "use mysql;select user,host from user where user='root';"

www.9159.com 10

 

mysq的命令历史:/root/.mysql_history

这样不安全,先删除这个文件,然后指向黑洞,就不会产生命令历史了

www.9159.com 11

 

mysql:

-h:加ip

-S:可以使用指定的sock文件

-P:加端口号

-u:加用户名

-p:加密码

show databases;:显示数据库

use database;:选择数据库

show tables;:查看数据库中的表

 

查看都有哪些库 show databases;
查看某个库的表 use db; show tables;
查看表的字段 desc tb;
查看建表语句 show create table tb;
当前是哪个用户 select user();
当前库 select database();
创建库 create database db1;
创建表 create table t1 (`id`int(4), `name` char(40));
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数

show variables like '%timeout%';

www.9159.com 12

set global table_open_cache= 128;

www.9159.com 13
查看mysql队列

showprocesslist; (相当于ps)

www.9159.com 14
创建普通用户并授权

grant all on *.* to user identified by '密码';

grant all on db1.* to 'user'@'10.0.2.100' identified by '密码';

grant all on db1.* to 'user3'@'%' identified by '密码';
更改密码

UPDATE mysql.user SET password=PASSWORD("newpwd")WHERE user='username' ;
查询

www.9159.com ,select count(*) from mysql.user;

select * from mysql.db;

select * from mysql.db where host like '10.0.%';
插入

update db1.t1 set name='*****' where id=1;
清空表

truncate table db1.t1;
删除表

drop table db1.t1;
删除数据库

drop database db1;
修复表

repair table tb1 [use_frm];(通过/data/www/数据库名/这个文件下面的文件修复)

mysql的备份和恢复:

备份 mysqldump -uroot -p db > 1.sql

-d:只是备份创建表的语句
恢复 mysql -uroot -p db < 1.sql
只备份一个表 mysqldump -uroot -p dbtb1 > 2.sql
备份时指定字符集mysqldump -uroot -p --default-character-set=utf8 db > 1.sql
恢复也指定字符集 mysql -uroot -p --default-character-set=utf8 db < 1.sql

忘记MySql密码: 编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数 skip-grant 重启数据库服务,这样就可以进入数据...

mysql常用操作,mysql

  1. 忘记root密码
    编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数  skip-grant  ,重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot ,修改相应用户密码 use mysql; update user set password=password('your password') where user='root';flush privileges;  最后修改/etc/my.cnf 去掉 skip-grant , 重启mysql服务

  2. skip-innodb   我们可以增加这个参数不使用innodb引擎。

  3. 配置慢查询日志
    #log_slow_queries = /path/to/slow_queries
    #long_query_time = 1

  4. mysql常用操作
    查看都有哪些库  show databases;
    查看某个库的表 use db; show tables; 
    查看表的字段 desc tb;
    查看建表语句 show create table tb;
    当前是哪个用户  select user();
    当前库 select database();
    创建库 create database db1; 
    创建表 create table t1 (`id` int(4), `name` char(40));  
    查看数据库版本 select version(); 
    查看mysql状态 show status;
    修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000; 
    查看mysql队列 show processlist; 
    创建普通用户并授权 grant all on *.* to user1 identified by '123456'; 
    grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222'; 
    grant all on db1.* to 'user3'@'%' identified by '231222';insert into tb1 (id,name) values(1,'aming');
    更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;   
    查询 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%'; 
    插入 update db1.t1 set name='aaa' where id=1;  
    清空表 truncate table db1.t1; 
    删除表 drop table db1.t1; 
    删除数据库 drop database db1; 
    修复表 repair table tb1 [use frm];

  5. mysql备份与恢复
    备份 mysqldump -uroot -p db >1.sql 
    恢复 mysql -uroot -p db <1.sql  
    只备份一个表  mysqldump -uroot -p db tb1 > 2.sql
    备份时指定字符集 mysqldump -uroot -p --default-character-set=utf8  db >1.sql
    恢复也指定字符集 mysql -uroot -p --default-character-set=utf8  db  < 1.sql

扩展知识:
myisam 和innodb引擎对比  
一台mysql服务器启动多个端口 
SQL语句教程   
sql教程pdf文档    ... %95%99%E7%A8%8B.pdf
什么是事务?事务的特性有哪些?  
mysql常用引擎  
批量更改表的引擎    
mysql 二进制日志binlog的模式   
mysql根据binlog恢复指定时间段的数据   
mysql字符集调整  

1. 忘记root密码 编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数skip-grant,重启数据库服务,这样就可以进入数据库不用授...

开始吧!

1、外键(foreign  key)

  1.定义:让当前表字段的值在另一个表的范围内选择

  2.语法:

    foreign key(参考字段名)

    references 主表(被参考字段名)

    on   delete  级联动作

    on   update  级联动作 

  以上的语法连在一起看

  3.使用规则

    主表、从表字段数据类型要一致

    主表被参考字段:主键

  4.示例

    表1、缴费信息表(财务)

      id  姓名  班级  缴费金额

      1  唐伯虎  AD06  300

      2  点秋香  AD06  200

      3  祝枝山  AD06  100

    表2、学生信息表(班主任)

      id 姓名 缴费金额

      1 唐伯虎 300

      2 点秋香 260

*      3   xxx    xxx*

*      ....................
*

*    创建表*

*    表1(主表)*

      create table jftab(
      id int primary key,
      name varchar(15),
      class char(5),
      money int
      );

    插入数据

      insert into jftab values
      (1,"唐伯虎","AD06",300),
      (2,"点秋香","AD06",260),
      (3,"祝枝山","AD06",250);

    表2(从表)     

      create table bjtab(
      stu_id int,
      name varchar(15),
      money int,
      foreign key(stu_id) references jftab(id)
      on delete cascade
      on update cascade
      );

    插入数据

      insert into bjtab values

      (1,"唐伯虎",300),(2,"点秋香",260);

*  5、删除外键*

*    alter  table  表名  drop  frreign  key  外键名;*

*    查看外键:show  create  table  表名;*

*  6、级联动作*

*    cascade*

*    数据级联删除、更新(参考字段)*

*    restrict(默认)*

*    从表有相关联记录,不允许主表操作*

*    set  null*

*    主表删除、更新,从表相关联记录字段值为NULL*

*  7、已有表添加外键
*

*  alter  table  表名  add  for  foreeign  key(参考字段)  references  主表(被参考字段)
*

*  on delete ...*

*  on  update ...*

2、表的复制

*  1.复制MOSHOU.sanguo的全部记录和字段到sanguo2*

*  create table sanguo2 select * from MOSHOU.sanguo;
*

*  2.复制MOSHOU.sanguo表的前3条记录,sanguo3*

*  create table sanguo3
*

*  select * from MOSHOU.sanguo limit 3;*

*  3.复制MOSHOU.sanguo表的id,name,country三个字段的前5条记录,sanguo4*

*  create table sanguo4*

*  select id,name,country from MOSHOU.sanguo limit 5;*

*   复制表结构*

   create table 表名 select * from 表名 where false;

  注意:

   复制表的时候不会把原表的键(key)属性复制过来

3、嵌套查询

  定义 :把内层的查询结果作为外层的查询条件

  语法格式

  select ... from 表名 where 条件(select ....);

  示例

    把攻击值小于平均攻击值的英雄名字和攻击值显示出来   

       1、先计算平均值

       select avg(gongji) from MOSHOU.sanguo;

       2、找到 < 平均值

      select name,gongji from MOSHOU.sanguo

      where gongji<平均值;

     子查询:

      select name,gongji from MOSHOU.sanguo

      where

       gongji<(select avg(gongji) from  MOSHOU.sanguo);

   2、找出每个国家攻击力最高的英雄的名字和攻击值

     select name,gongji from sanguo where 

     gongji in(select max(gongji) from sanguo  group by country);

 4、多表查询

  select 字段名列表 from 表名列表; (笛卡尔积)

   1、显示省和市的详细信息

  河北省 石家庄市
  河北省 廊坊市
  湖北省 武汉市

*  *select sheng.s_name,city.c_name from sheng,city

  where
  sheng.s_id=city.cfather_id;

   2、显示省市县详细信息

  select sheng.s_name as sheng,city.c_name as city,xian.x_name as xian from sheng,city,xian
  where
  sheng.s_id=city.cfather_id and
  city.c_id=xian.xfather_id;

5、连接查询 

  内连接 

*  1.语法格式*

    select 字段名 from
    表1 inner join 表2 on 条件
    inner join 表3 on 条件;

  2、显示省市详细信息

    select sheng.s_name,city.c_name from sheng
    inner join city on sheng.s_id=city.cfather_id;

  3、显示省市县详细信息  

    select sheng.s_name,city.c_name,xian.x_name from
    sheng inner join city
    on sheng.s_id=city.cfather_id
    inner join xian
    on city.c_id=xian.xfather_id;

  2、外连接

    以 左表 为主显示查询结果

    select 字段名 from 表1 left join 表2 on 条件

    left join 表3 on 条件;

    显示省市详细信息

    select sheng.s_name,city.c_name from sheng

     left join city

    on sheng.s_id=city.cfather_id;

     右连接

    用法同左连接,以右表为主显示查询结果

 6、数据备份(mysqldump,在Linux终端中操作)

  命令格式

    mysqldump  -u用户名  -p  源库名  > ~>***.sql

  源库名的表示方式

  --all-databases  备份所有库

  -B 库1 库2 库3   备份多个库

  库名 表1 表2 表3 备份指定库的多张表

  示例:

    备份所有库,放到 mydata 目录下:all.sql

    mysqldump -uroot -p --all-databases > all.sql

    备份 db4 库中的 sheng city xian 三张表,scx.sql

     mysqldump -uroot -p db4 sheng city xian > scx.sql

     备份 MOSHOU 和 db4 库, md.sql

     mysqldump -uroot -p -B MOSHOU db4 > md.sql

     备份 db4 库, db4.sql

     mysqldump -uroot -p db4 > db4.sql

7、数据恢复

  1、命令格式(Linux终端)

  mysql -uroot -p 目标库名 < ***.sql

  2、从所有库备份中恢复某一个库(--one-database)

  mysql -uroot -p --one-database 目标库名 < all.sql

  mysql -uroot -p --one-database db4 < all.sql

8、mysql的用户账户管理

  1、开启MySQL远程连接  

    1、sudo -i
    2、cd /etc/mysql/mysql.conf.d/
    3、subl mysqld.cnf
      #bind-address = 127.0.0.1 ctrl + s保存  ----此行为注释
    4、/etc/init.d/mysql restart

  2、添加授权用户

    用root用户登录mysql

    mysql -uroot -p123456

    授权:   

      grant 权限列表 on 库.表 to "用户名"@"%"
      identified by "密码" with grant option;   

    权限列表:all privileges 、select 、insert
    库.表 : *.* 所有库的所有表

  3、示例
    1、添加授权用户tiger,密码123,对所有库的所有表有所有权限
    grant all privileges on *.* to "tiger"@"%" identified by "123" with grant option;
    2、添加用户rabbit,对db4库有所有权限
    grant all privileges on db4.* to "rabbit"@"%" identified by "123" with grant option;

 

本小结完!

 

本文由9159.com发布于www.9159.com,转载请注明出处:这样就可以进入数据库不用授权了 mysql -uroot,修

关键词: