咱们能够将用于数据服务的数据库分为关系型数据库和非关系型数据库,关系型数据库最典型的就是Mysql,以及和他同源的MariaDB数据库,oracle等,非关系型数据库则有redis数据库,mongodb(文档型的数据库),ES等,将来很火的NewSQL数据库,TiDB、Tdengine等等。mysql
下面咱们以MariaDB数据库为例来讲在Linux中的各类操做。redis
1.安装MariaDB数据库sql
[root@local ~]# yum install mariadb-server mariadb -y
2.开启数据库服务和设置开机自动启动mongodb
[root@local ~]# systemctl start mariadb
[root@local ~]# systemctl enable mariadb
若是在安装或操做的过程当中,进程出现了错误,咱们能够在日志里面去查看数据库
[root@local ~]# cat /var/log/mariadb/mariadb.log
3.安装完成以后,咱们用命令检查下数据库3306端口(默认)是否开放vim
[root@local ~]# netstat -lntup|grep mysql
或者用管道命令查看3306端口是否开放安全
[root@local ~]# netstat -lntup|grep 3306
4.在较高版本的MariaDB中,默认登陆时会产生一串随机数密码,可是在较低的版本(5.7.0)中,默认值是空,咱们使用的是(5.5.68-MariaDB)版本,因此给Mariadb配置登录密码,并使用新密码进行登陆数据库。oracle
[root@local ~]# mysqladmin password 'test123'
这里咱们将密码设置为test123.,设置好以后沃恩能够用命令登陆到数据库ide
[root@local ~]# mysql -uroot -ptest123
上面一行代码表示,咱们用root帐户,密码为test123登陆到MariaDB,退出时键入quit便可。测试
5.修改MariaDB数据库密码,在修改数据库密码时,必须输入原登陆帐户和密码,后接新密码才能够,
[root@local ~]# mysqladmin -uroot -ptest123 password 'test'
以上命令就是将数据库的密码由test123改成test,这时咱们再登陆数据库就要用test登陆,原密码不能再使用
能够看到,已经登陆成功了,此时若是咱们再用原密码登陆,则会失败
6.找回数据库的密码,若是咱们忘记了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
7.数据库用户管理
7.1查看数据库有哪些用户
以上命令就是从数据库的用户表里面查询有哪些用户
7.2 删除用户
drop user 'user'@'主机域';
以上代码咱们就删掉了一个host名为"::1"的用户
7.3建立用户
由于用户的权限大多涉及到对数据库的各类操做,好比root用户,它的权限极大,咱们就赋予它l域名为localhost访问,也就是说它只能再本地进行登陆操做,在咱们本身建立用户的时候,能够指定域名字段,容许在其规定的域名段内访问数据库,建立用户名的语法:create user ceshi@'10.0.0.%' identified by 'ceshi123';(ceshi:数据库用户名,10.0.0.%:规定用户只能在此端内访问数据库,ceshi123:数据库用户密码)
用户默认是没有权限的,下面是受权的方法
7.3.1查看用户权限:show grants for ceshi@'10.0.0.%';
显示能够登陆可是没有权限,而且咱们设置的密码系统通过了加密。
7.3.2 用户受权
咱们受权某一个用户管理某一个数据库,前提是咱们在整个数据库中有此库存在,咱们先来看一下有哪些数据库
咱们就以test库为例,将ceshi用户赋予管理此库的权限
以上命令旨在ceshi用户拥有管理test库下全部数据的一切权限,查看一下受权,测试用户就会有一个管理数据库的权限
7.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';
只容许有增删改查的权限。
7.数据库表管理
7.1查看库
7.2查看当前使用的库
咱们目前在test库下
7.3 查看库下的表
这里显示为空,由于咱们尚未在此库下建立表,为更加直观的表示,咱们选择blog库,查看其数据表的结构
能够看到blog库下建立了数据表,咱们如今能够查看一下blog_users一列的信息
如下方法也是查看blog_users一列的信息,二者同样
8.数据库管理
8.1建立数据库
8.2查看建库的语句
能够看见数据库默认的字符是拉丁字符,稍后咱们在配置文件中修改默认字符集,工做字符是:utf8,gbk,utf8mb4,修改之一的作法就是咱们建立一个utf8的数据库,这样在插入中文的时候就不会乱码
8.3删除库
9.数据表
9.1建立数据表
9.2 查看建表语句:
这里须要注意的是,表是在库下面,因此先有库,再有表。
9.3 修改表的名称
9.4删除表
9.5 表中插入数据
9.6 查看表结构
9.7解决表中中文乱码,修改字符集配置文件
9.7.1备份和修改配置服务端文件
9.7.2修改客户端配置文件
这个时候咱们回到数据库里面,发现依然是乱码
查看建库和建表语句,发现原来他们的初始默认字符是拉丁
9.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.9更新数据库(update)
咱们以test库为例,来修改(更新)数据表中id=4的字段
再有,咱们也能够修改(更新)数据表中某一行的某一列,好比咱们修改test1表中的第一行的第四列
或者
以上咱们取name或者id均可以将数据更新,由于他们都在同一行。
9.10 删除数据表中的字段
仍然使用test1数据表,如今删除id=4的行,咱们就能够有以下操做
固然,咱们也能够同时删除多个行
在这里,有个逻辑概念,就是咱们在删除多个id行的时候,不能用and,由于一个表中不可能同时有二者或二者以上id是相同的状况,因此咱们若是在命令中使用and来并列删除,会出现逻辑错误。
还有一个须要注意的是,咱们在删除的时候,极其危险,咱们必定要在delete 后面跟条件where ,如若否则,会将整个数据表删除,那将是天大的灾难。
下面再删除年龄大于28岁的字段
也能够多个条件套用进行删除,这里的逻辑和上面的例子是同样的,好比要删除年龄小于26岁,而且大于27岁的字段
综合以上就是数据库的增删改查,以及数据表的增删改查,包括修改默认字符集等等,但愿对有须要的小伙伴有所帮助。
---《墨云流香》
QQ:1757468585