目 录
一、视图
二、用户
2.1 新建用户
三、创建远程登录用户test
3.1 远程登录mysql编辑
3.1 7-1需要赋予权限
3.3 修改远程登录用户的密码
3.4 修改远程登录的用户名
3.5 删除用户:drop user 'lisi'@'192.168.114.%';
四、修改用户密码
4.1 修改当前本地密码
4.2 修改远端密码
五、破解密码
5.1 无密码登录
5.2 关闭端口号
5.3 修改新密码
视图:虚表,保存有实表的查询结果,相当于表明。
利用视图,可以隐藏表的真实结构,在程序中利用视图进行查询,可以避免表结构的变化,而修改程序,降低程序和数据库之间的耦合度。
现有一张students表。
一、视图
视图是根据用户的应用需求,从一个或多个表中导出的虚表,这里“虚”的意思是视图中并没有真正存储数据,数据存储在对应的表中。
语法:create view 视图名称 as 查询语句;
创建视图:create view v1 as select * from students where stuid=5;
显示视图:show create view v1;
看视图结构:show table status like "v1";
删除视图:drop view 视图名称;
二、用户
数据库的用户有两个部分组成:用户名user和主机名host组成,root@localhost,root@192.168.114.10
在数据库中有一个数据库叫mysql,其中user表就是用来存放用户的相关信息的表。
通过查看表:select * from myql.user;
其中我们关注的三个字段是User用户名,Host位置(主机名本地或远端),authentication_string密码。这里的密码不叫password!
2.1 新建用户
格式:create user '用户名'@'来源地址' [indentified by [password] '密码']; 后面跟密码,可以不跟,直接建立。在虚拟中使用编译安装的mysql实验。前面博客有讲解编译安装。
启动数据库,登录数据库!
进入数据库hellodb;use hellodb;
如果想登录在其他主机上,如:mysql -uroot -pabc123 -h192.168.114.10
是登录不上去的。
因为在Node1主机上的mysql.user表中,只有本地登录的记录。
把这两条命令打上去,取消复杂度和长度的限制
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
三、创建远程登录用户test
可以创建一个远程登录的用户。这里用%代替,指在这个网段的任意主机都可以登录。
在另一台主机192.168.114.20上安装mariadb:
[root@Node2 ~]#:yum install -y mariadb-server
[root@Node2 ~]#:systemctl start mariadb.service
[root@Node2 ~]#:mysql_secure_installation#回车
Set root password? [Y/n] y#设置密码,确认密码
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
[root@Node1 ~]#:mysql -uroot -pabc123 #进到了数据库里面,分为客户端指令和数据库服务端指令
MariaDB [(none)]>ctrl + D退出
3.1 远程登录mysql
登录上之后,显示数据库,看是否能够显示远端192.168.114.10的数据库。
show databases;
看不到7-1中的数据库,是因为权限问题。
3.1 7-1需要赋予权限
grant all on *.* to 'test'@'192.168.114.%';
7-2使用ctrl+D退出mysql,再重新登录一下。 此时再看就显示出了远端192.168.114.10的数据库了。
3.3 修改远程登录用户的密码
使用7-2尝试进入远端数据库,看是否进入:
3.4 修改远程登录的用户名
现在的用户名是test。查看:select user,host,authentication_string from mysql.user;
我本地的root用户密码是abc123,test用户的密码也是abc123。两者加密后的密码一样。
我们把test用户改成lisi用户:rename user 'test'@'192.168.114.%' to 'lisi'@'192.168.114.%';
3.5 删除用户:drop user 'lisi'@'192.168.114.%';
四、修改用户密码
set password = 'abcabc'; #这个没有指定用户名,默认是修改当前用户
set password for 'lisi'@'192.168.114.%' = 'aaabbb'; #给指定用户修改密码
4.1 修改当前本地密码
ctrl + D 退出数据库重新登录,使用密码abcabc登录。先试试原密码abc123。
4.2 修改远端密码
先创建一个用户:create user 'test'@'192.168.%.%' identified by 'abc123';
加密后的密码是C18A
修改密码:set password for 'test'@'192.168.%.%' = 'abcabc'; 我们修改的密码是abcabc与本地root的密码相同。那么加密后的密码也相同。
加密后的数据也相同:
五、破解密码
5.1 无密码登录
当密码忘记或者需要破解密码的情况下,需要进入服务器中。
修改/etc/下的my.cnf文件。在[mysqld]中添加配置。
数据库的单用户模式,此模式下权限受到限制,很多功能无法使用,除了破解密码不要加此项。
重启systemctl restart mysqld
登录不再需要密码了
由于登录不再需要密码,那么在这个网段的主机都能登录进来,显然是不安全的。
5.2 关闭端口号
那么我们破解自己的密码的同时,最好把端口号也一并关闭。还是在/etc/my.cnf中。
在下方添加skip-networking配置,关闭端口号。
重启一下:systemctl restart mysqld就能保证其他用户不能登录本地数据库了。让自己登录
既然是破解密码,可以在数据库中把用户密码字段的数据通过updata清空。
然后重新设置set password = '密码';
5.3 修改新密码
我们在本地登录数据库:清空本地用户密码。
update mysql.user set authentication_string = '' where user='root' and host='localhost';
然后退出,把/etc/my.cnf中的两条配置删除或注释掉。
重启:systemctl restart mysqld
无密码登录进去。需要重新取消密码复杂度(两条命令)。修该密码:set password = 'abc123';
此时密码成为了我们自己设置的密码! abc123
---end---