文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux 数据库操作(一)

2020-02-16 07:02

关注

Linux 数据库操作(一)

我们可以将用于数据服务的数据库分为关系型数据库和非关系型数据库,关系型数据库最典型的就是Mysql,以及和他同源的MariaDB数据库,oracle等,非关系型数据库则有redis数据库,mongodb(文档型的数据库),ES等,未来很火的NewSQL数据库,TiDB、Tdengine等等。

下面我们以MariaDB数据库为例来说在Linux中的各种操作。

安装MariaDB数据库

[root@local ~]# yum install mariadb-server mariadb -y

开启数据库服务和设置开机自动启动

[root@local ~]# systemctl start mariadb
[root@local ~]# systemctl enable mariadb

如果在安装或操作的过程中,进程出现了错误,我们可以在日志里面去查看

[root@local ~]# cat /var/log/mariadb/mariadb.log

安装完成之后,我们用命令检查下数据库3306端口(默认)是否开放

[root@local ~]# netstat -lntup|grep mysql

或者用管道命令查看3306端口是否开放

[root@local ~]# netstat -lntup|grep 3306

在较高版本的MariaDB中,默认登录时会产生一串随机数密码,但是在较低的版本(5.7.0)中,默认值是空,我们使用的是(5.5.68-MariaDB)版本,所以给Mariadb配置登陆密码,并使用新密码进行登录数据库。

[root@local ~]# mysqladmin password "test123"

这里我们将密码设置为test123.,设置好之后沃恩可以用命令登录到数据库

[root@local ~]# mysql -uroot -ptest123

上面一行代码表示,我们用root账户,密码为test123登录到MariaDB,退出时键入quit即可。

修改MariaDB数据库密码,在修改数据库密码时,必须输入原登录账户和密码,后接新密码才可以,

[root@local ~]# mysqladmin -uroot -ptest123 password "test"

以上命令就是将数据库的密码由test123改为test,这时我们再登录数据库就要用test登录,原密码不能再使用

可以看到,已经登录成功了,此时如果我们再用原密码登录,则会失败

找回数据库的密码,如果我们忘记了root用户的密码,怎么样能够找回,我们可以用命令忽略授权表启动,就是绕过密码启动,首先停掉数据库,再启动

[root@local ~]# systemctl stop mariadb
[root@local ~]# /bin/sh /usr/bin/mysqld_safe --basedir=/usr --skip-grant-table &
--skip-grant-table    #此选项就是忽略授权表
&              #&符号是放在后台启动

MariaDB>mysql

MariaDB> UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user="root" and host="localhost";
MariaDB> flush privileges;

用以上命令将数据库密码设置为test123,flush privileges命令就是让配置生效

 

 下面我们就可以用新密码进行数据库登录操作

因为数据库是讲究及其安全的,我们刚才用了忽略授权表启动,所以我们要将其进程杀掉

现在3306端口已经停掉了,我们再用密码登录

[root@local ~]# systemctl start mariadb
[root@local ~]# mysql -uroot -ptest123

 

数据库用户管理

1查看数据库有哪些用户

 

以上命令就是从数据库的用户表里面查询有哪些用户

2 删除用户

drop user "user"@"主机域";

 

以上代码我们就删掉了一个host名为"::1"的用户

3创建用户

因为用户的权限大多涉及到对数据库的各种操作,比如root用户,它的权限极大,我们就赋予它l域名为localhost访问,也就是说它只能再本地进行登录操作,在我们自己创建用户的时候,可以指定域名字段,允许在其规定的域名段内访问数据库,创建用户名的语法:create user  ceshi@"10.0.0.%" identified by "ceshi123";(ceshi:数据库用户名,10.0.0.%:规定用户只能在此端内访问数据库,ceshi123:数据库用户密码)

用户默认是没有权限的,下面是授权的方法

3.1查看用户权限:show grants for ceshi@"10.0.0.%";

 

显示可以登录但是没有权限,并且我们设置的密码系统经过了加密。

3.2 用户授权

我们授权某一个用户管理某一个数据库,前提是我们在整个数据库中有此库存在,我们先来看一下有哪些数据库

我们就以test库为例,将ceshi用户赋予管理此库的权限

以上命令旨在ceshi用户拥有管理test库下所有数据的一切权限,查看一下授权,测试用户就会有一个管理数据库的权限

4 直接增加用户权限

grant all privileges on dbname.* to username@localhost identified by "passwd";

但是新版的MariaDB数据库支持用户和权限分离,这样安全性更高一些,当我们所有用户创建完成后,都要执行:flush privileges;让配置生效。

这里有一个重要的问题,就是自己创建的用户,其用户本身是否再有执行创建用户的权限,这个是至关重要的,所以我们在实际的工作当中,不能给创建的用户:grant all privileges,所有权限

all privileges包含以下所有能执行的权限:

SELECT 查询(数据)
INSERT 插入(数据)
UPDATE 修改(数据)
DELETE 删除(数据)
=============================================
CREATE 创建(数据库、表等对象)
DROP 删除(数据库、表等对象)
RELOAD 重载
SHUTDOWN 关闭

PROCESS 进程
FILE 文件
REFERENCES 参考资料
INDEX 索引
ALTER 修改(数据库、表等对象)
SHOW DATABASES 查看数据库
SUPER 超级权限
CREATE TEMPORARY TABLES 创建临时表
LOCK TABLES 锁表
EXECUTE 执行
REPLICATION SLAVE 从复制权限
REPLICATION CLIENT 从客户端复制
CREATE VIEW 创建视图
SHOW VIEW 查看视图
CREATE ROUTINE 创建存储过程
ALTER ROUTINE 修改存储过程
CREATE USER 创建用户
EVENT 事件
TRIGGER 触发器
CREATE TABLESPACE 创建表空间

所以在实际生产环境中,我们可以给创建的用户分配部分权限,命令可以这样:

grant SELECT,INSERT,UPDATE,DELETE on test.* to ceshi@localhost identified by "test123";

只允许有增删改查的权限。

数据库表管理

1查看库

2查看当前使用的库

我们目前在test库下

3 查看库下的表

 

 这里显示为空,因为我们还没有在此库下创建表,为更加直观的表示,我们选择blog库,查看其数据表的结构

可以看到blog库下创建了数据表,我们现在可以查看一下blog_users一列的信息

以下方法也是查看blog_users一列的信息,两者一样

数据库管理

1创建数据库

2查看建库的语句

可以看见数据库默认的字符是拉丁字符,稍后我们在配置文件中修改默认字符集,工作字符是:utf8,gbk,utf8mb4,修改之一的做法就是我们创建一个utf8的数据库,这样在插入中文的时候就不会乱码

3删除库

数据表

1创建数据表

2 查看建表语句:

 

这里需要注意的是,表是在库下面,所以先有库,再有表。

 9.3 修改表的名称

4删除表

5 表中插入数据

6 查看表结构

7解决表中中文乱码,修改字符集配置文件

7.1备份和修改配置服务端文件

7.2修改客户端配置文件

这个时候我们回到数据库里面,发现依然是乱码

查看建库和建表语句,发现原来他们的初始默认字符是拉丁

8更改字符集

可以将数据库文件导出来,做一次备份,临时放到/tmp下面

[root@local ~]# mysqldump -uroot -ptest123 -B test>/tmp/a.sql

[root@local /tmp]# vim a.sql

 

现在我们将修改过的文件导入到数据库中,因为我们已经做过备份,所以可以将数据库中的表删除

利用写入重定向命令,将编辑好的文件导入数据库

可以看到,test数据库已经存在了,为保证修改过的数据库文能够正常加载运行,我们建议先停掉数据库服务,再重新启动

1 [root@local /tmp]# systemctl stop mariadb
2 [root@local /tmp]# systemctl start mariadb
3 [root@local /tmp]# mysql -uroot -ptest123

可以看到,我们已经成功将字符集修改,在表中插入中文,不再显示乱码,这就是修改字符集的方法之一。当然还可以用命令行去修改字符集。

9更新数据库(update)

我们以test库为例,来修改(更新)数据表中id=4的字段

再有,我们也可以修改(更新)数据表中某一行的某一列,比如我们修改test1表中的第一行的第四列

或者

以上我们取name或者id都可以将数据更新,因为他们都在同一行。

10 删除数据表中的字段

仍然使用test1数据表,现在删除id=4的行,我们就可以有如下操作

当然,我们也可以同时删除多个行

在这里,有个逻辑概念,就是我们在删除多个id行的时候,不能用and,因为一个表中不可能同时有两者或两者以上id是相同的情况,所以我们如果在命令中使用and来并列删除,会出现逻辑错误。

还有一个需要注意的是,我们在删除的时候,极其危险,我们一定要在delete 后面跟条件where ,如若不然,会将整个数据表删除,那将是天大的灾难。

下面再删除年龄大于28岁的字段

也可以多个条件套用进行删除,这里的逻辑和上面的例子是一样的,比如要删除年龄小于26岁,并且大于27岁的字段

 

综合以上就是数据库的增删改查,以及数据表的增删改查,包括修改默认字符集等等,希望对有需要的小伙伴有所帮助。

---《墨云流香》

QQ:1757468585

 

 

 

 

 

 

 

 

 

 

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯