数据库(Database)
存放和管理数据的仓库,用于管理大量或海量数据。
少量数据请使用文件存放和管理,但是对于大量数据,使用数据库将更加方便。
数据库管理系统(Database Management System,DBMS),简称数据库(DB)。
如果不用数据库:Program <---------> File
如果使用数据库:Program <---------> DBMS <--------->File
数据库管理系统分为:
- 关系型数据库管理系统(Relational Database ,Management System,RDBMS)
- 非关系型数据库(No-SQL)
典型非关系型数据库:
- MongoDB
- Redis
典型关系型数据库产品:
-
国产:达梦等
-
大型:Oracle,DB2,SQL Server等(网络型)
-
中型:MySQL,MariaDBd等(网络型)
-
小型:Access等(文件型)
-
微型:SQLited等(文件型)
SQL:Structure Query Language,结构化查询语言。所有关系型数据库都遵守的工业标准,即可以通过 SQL 语句操控所有遵守该标准的数据库。
与数据库相关的工作岗位:数据库管理员(Database Administrator,DBA)
MySQL
库操作
安装配置 MySQL 数据库
sudo apt install mysql-server # 安装 MySQL 服务器(也会自动装上 MySQL 客户端工具)
sudo mysql_secure_installation # 设置 root 用户密码
- 在本地以 root 用户登录 MySQL服务器。
sudo mysql -uroot -p
先查看 /etc/rc.d/init.d/mysql status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.启动:/etc/init.d/mysql start
- 创建一个项目需要使用的数据库。
CREATE DATABASE mydb DEFAULT CHARSET UTF8; /*创建一个新的数据库,数据库名为 mydb,使用的字符集为 UTF-8 */
DROP DATABASE abc; /*删除名为 abc 的数据库*/
- 创建一个普通用户,并将相关数据库的访问权限授予给它(遵守权限最小化原则)。
CREATE USER 'itchenchong'@'localhost' IDENTIFIED BY '12345678';
/*创建一个新的用户,用户名为itchenchong,密码为 12345678,该用户只能在本机上登录 MySQL 服务器*/
DROP USER 'itchenchong'@'localhost';
/*删除名为itchenchong的用户*/
GRANT ALL ON mydb.* TO 'itchenchong'@'localhost';
/*将 mydb 数据库的所有权限授予给 itchenchong 用户(只能在本机登录),ALL可以细化为delete等*/
REVOKE ALL ON mydb.* FROM 'itchenchong'@'localhost';
/*itchenchong用户对mydb库的所有权限收回*/
- 刷新权限
FLUSH PRIVILEGES;
- 退出 root 用户,后面就以新创建的普通用户登录管理数据库。
mysql -uitchenchong -p
温馨提示:在 SQL 语句中,关键字不区分大小写,通常建议使用全大写形式。一条 SQL 语句必须以英文分号(;)结尾。
查询所有用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
在一个数据库中可以创建若干张数据表(简称表,Table),表就是一个由若干行(Row)和列(Column)构成的二维表格。我们通常将一行称为一条记录(Record),每条记录是由若干个字段(Field)构成。
SQL 分为:
- DDL:Data Definition Language,数据定义语言,对数据库对象进行创建和管理,比如:CREATE TABLE,CREATE VIEW,DROP TABLE,ALTER TABLE等。
- DCL:Data Control Language,控制数据的访问权限,比如 GRANT 等。
- DML:Data Manipulation Language,数据操纵语言,对数据增删改操作,比如 INSERT ,DELETE,UPDATE 等。
- DQL:Data Query Language,数据查询语言,比如 SELECT 等。
- TCL:Transaction Control Language,事物控制语言,比如 COMMIT,ROLLBACK 等。
查看SQL密码要求:(根据需要可以修改密码的安全模式policy,默认为1)
SHOW VARIABLES LIKE 'validate_password%';