13.1-13.6 预习笔记

1.设置更改root密码

这里的root并不是Linux操作系统的用户,而是MySQL的超级管理员

 

1)首先启动MySQL服务

先查看ps aux |grep mysqld

如果没用启动/etc/init.d/mysqld start 来启动服务

 

2)mysql -uroot来对mysql进行一些操作,但是这个命令是在/usr/local/mysql/bin下的,并且/usr/local/mysql/bin没有在PATH中

所以我们来更改环境变量,export PATH=$PATH:/usr/local/mysql/bin;如果想要这个变量永久生效就把他加在/etc/profile中,然后再source /etc/profile

设置完成后,我们在来mysql -uroot可以发现access被denied了,这是因为之前安装的mysql5.7版本是有个临时密码的oSduCXnh!1Kf

我们在用mysql -uroot -p (这个参数是指密码) oSduCXnh!1Kf,就可以进入下面的页面了,如果想要退出则直接在方块处输入quite,回车即可

 

3)如果没有密码,可以用一下命令设置密码

mysqladmin -uroot password 'passwd'

如下图,我们把密码重置为 mysqladmin -uroot password '123456root'

 

4)之前的临时密码并不好记,我们如果想要重置密码,可以使用下面的命令

# mysqladmin -uroot -p 'old passwd' password 'new password'

所以如下图,我们就可以mysqladmin -uroot -p 'oSduCXnh!1Kf' password '123456root', 但是error: 'Your password has expired. To log in you must change it using a client that supports expired passwords.',那我们就通过忽略授权表的方式修改密码

 

5)通过忽略授权表的方式改密码

  • 先编辑mysql的配置文件,vim /etc/my.cnf

  • 在[mysqld]的第一行添加,skip-grant-tables来忽略密码认证

  • 重启MySQL服务/etc/init.d/mysqld restart

  • 重启后,mysql -uroot,进入页面来更改一个表

在最下面mysql>后面输入 use mysql

mysql> update user set authentication_string=PASSWORD('newpassword') where User='root';

 

  • 再 vim /etc/my.cnf, 把skip-grant-tables注释掉,然后再重启MySQL服务

  • 然后再实验新密码是否设置成功

mysql -uroot -p

如下图,设置成功

 

 

2.连接MySQL

1)连接本机

mysql -uroot -p,输入密码

2)连接远程

比如从A服务器去连接B服务器的MySQL

mysql -uroot -ppassward -h ip addr -Pport

3306端口为默认端口

 

3)使用socket通信方式连接,只适合本机,和第一种方式等同

mysql -uroot -ppassward -Ssocket file route

 

4)连接MySQL之后操作一些命令

  • -e,使用在shell脚本中

mysql -uroot -p'password' -e "request"

例如想要把所有的数据库列出来,mysql -uroot -p'123456root' -e "show database"

 

 

3.MySQL常用命令

mysql有自己专门的命令,必须要在连接了mysql之后才可以使用,这些命令和linux的命令不同

1)show databases; 查询库

可以看到现在还没有任何的database

注: 有时我们在输入命令时会遇见erro message ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

这时我们可以执行alter user 'root'@'localhost' identified by 'youpassword';   /set password=password("youpassword"); 来更改密码就没有问题了

 

2)use 库名; 切换库

例如我们想要切换到mysql这个库下面,就可以use mysql;

如下图

 

3)show tables; 查看库里面的表

 

 

字段组成表,表组成库

4)desc 表的名字;查看表里的字段

例如我们查看user表里的字段

 

5) show create table 表名字\G;显示如何创建的表,也就是表里的语句

\G为竖排显示的意思

 

6)select usr(); 查看当前用户

 

如我们远程连接到内网mysql -uroot -p123456root -h192.168.244.128

再select user();

注:如果mysql不能全程连接,有可能是因为mysql服务器出于安全考虑,默认只允许本地登录数据库服务器,我们按照下面步骤操作就可以了

mysql -u root -p 先本地连接

mysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>flush privileges;

mysql>select host, user from user;

---------------------

作者:hjulkk

来源:CSDN

原文:https://blog.csdn.net/hjulkk/article/details/52563044

版权声明:本文为博主原创文章,转载请附上博文链接!

 

注:mysql也有类似于linux shell命令history一样的功能,其命令历史记录在.mysql_history中

 

注:mysql也支持Ctrl l的清屏功能

注:如果不想是某个命令生效,就在该命令之前加#就可以了

注:退出mysql,可以用quit/exit/ctrl d

 

7)select database(); 查看当前使用的数据库

如下图所示当前数据库为空

 

8)create database 数据库的名字;创建数据库

例如我们创建数据库db1

create database db1;

show databases;

如下图db1已经创建好了

 

9)创建库之后再创建表

先用use 库名;切换到想要创建表的库下

create table 表名(`id` int(4), `name` char(40));

`id` `name`用来制定字段

int 表示数字,(4)表示最长不超过4个数字

char 表示字符串,(40)表示最长不超过40个字符

 

上图中的CHARSET=latin1,可以在创建表的时候定义

我们可以用drop table tb_1;,把之前创建的表删除掉,重新再创建一个create table tb_1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=UTF8;

然后我们在show create table tb_1\G; 就可以发现CHARSET变成了UTF8而不是Latin1了

 

注:两种常用的引擎myisam(自动检测行数) 和 innodb

 

10)select version(); 查看当前数据库的版本

 

 

11)show status;查看当前数据库的状态

12)show varibles; 查看参数

show variables like '参数'; 来查看某一个参数

例如; show variables like 'max_connect%'; %表示通配

 

13)set global 参数=...; 可以用来修改参数

例如 set global max_connections=1000;

如果想要永久改变参数,就需要退出来,编辑配置文件,vim /etc/my.cnf

 

14)show processlist; 用来查看队列,就类似于在linux中使用ps/top命令

show full processlist; 显示的信息更加完整

 

 

4.MySQL用户管理

1)MySQL创建用户及授权

  • grant all on *.* to 'user1' identified by 'passwd';

grant指授权的意思

all指所有的操作

*.* 指所有的库和表,*代表库,第二个*代表表

user1, 指创建的用户名,后面可以加@用来制定来源的ip,@%就表示所有的ip

identified by 'passwd', 设置新建用户的密码

 

所以这上面的user1用户拥有所有的权限

 

  • 我们可以针对不同的权限来创建用户,例如

grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.224.128' identified by 'bbbb';

创建user2,限制连接的ip为192.168.224.128, 并且只对db1库中的表有select/update/insert的操作,密码设置为bbbb

 

因为限定了连接ip,所以在登录user2的时候要远程连接

 

2)show grants; 查看当前用户的权限

  • show grants for user2@192.168.224.128;

 

这个实际应用的需求:如果一个用户需要用另外的ip登录,那么我们就可show grants,copy & paste创建用户的信息,可以使用相同的密码

 

 

5.常用sql语句-增删改查

• select count(*) from mysql.user;

count(*)表示行数,查看mysql库的user表的行数

• select * from mysql.db;

查看mysqld库中db表所有的内容

 

• select db from mysql.db;

查看某个字段

 

• select db,user from mysql.db;

查看多个字段可以用,号连接并列

 

• select * from mysql.db where host like '192.168.%';

模糊查询

 

• insert into db1.tb_1 values (1, 'abc');

把数据(1, 'abc')插入到db1.tb_1

注:字符串的操作最好加上''

 

• update db1.tb_1 set name='aaa' where id=1;

更改

注:delete可以删除内容,格式例如:delete from db1.tb_1 where id=1;

 

• truncate table db1.tb_1;

清空一个表中的全部数据

truncate/delete vs. drop

truncate/delete只会清空表中的内容,但是表的架构如字段等还会保留

drop会删除整张表

 

• drop table db1.t1;

删除表

• drop database db1;

删除库

 

 

6.MySQL数据库备份恢复

1)备份库、恢复库

  • mysqldump是一个备份的命令,可以备份库和表

格式可以写成

# mysqldump -uroot -p'passwd' 想要备份的库名或表名 > filename

例如我们就可以

mysqldump -uroot -p'123456root' mysql > /tmp/mysqlbak.sql , 用追加把备份内容拷贝到一个备份文件中去

 

  • 备份完成后该如何恢复备份

还是用上面的例子, mysql -uroot -p'123456root' -e create database mysql2

mysql -uroot -p'123456root' mysql2 < /tmp/mysqlbak.sql

用反向重定向恢复备份

 

2)备份表、恢复表

•备份表 mysqldump -uroot -p'123456root' mysql user > /tmp/user.sql

如果想要备份表就直接在库后面加空格表名就可以了

 

• 恢复表 mysql -uroot -p'123456root'mysql < /tmp/user.sql

在恢复一个表的备份时,无需写表名,只有库名就可以了

 

3) 备份所有库 mysqldump -uroot -p -A >/tmp/123.sql

-A  表示all

 

4) 只备份数据库中表结构 mysqldump -uroot -p -d mysql > /tmp/mysql.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值