赞
踩
db根据存储模型划分,数据库类型主要可分为:网状数据库(Network Database)、关系数据库(Relational Database)、树状数据库(Hierarchical Database)、面向对象数据库(Object-oriented Database)
等。商业应用中主要是关系数据库,而关系数据库中常见的软件有比如Oracle、DB2、Sybase、MS SQL Server、Informax、MySQL等等。
实数据库系统几乎支持所有的操作系统,也就是上述数据库几乎与平台无关(当然除SQL Server和Access以外,因为这是微软的东西,平台依赖性很强的,只在windwos系统平台上运行)。
关系型数据库系统除了全面列出来的还有很多,但最常用的也不外乎:
注:MySQL已被Oracle公司收购。MySQL原创始人重新开发了一个分支,叫MariaDB,完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。CentOS7系统中已经将默认的数据库系统MySQL替换为MariaDB,因此接下来的关于数据库的安装及使用演示均是基于MariaDB。
数据库的软件体系结构是C/S(Client/Server,客户端/服务端),要访问或管理数据库必须通过对应的客户端。认清这个问题,有两个好处(以MariaDB为例):
下图中,初学者往往会mariadb.x86_64为数据库,实则它只是客户端;
mariadb.x86_64
数据库客户端mariadb-server.x86_64
才是数据库服务端本次安装使用“软件仓库安装法”。同时安装服务端及客户端:
yum install -y mariadb-server mariadb
systemctl start mariadb
netstat -utnlp
ps aux | grep mariadb
主配置文件:/etc/my.cnf
#MySQL也是这个,所以说MariaDB完全兼容性!
vi /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 # # This group is read both both by the client and the server # use it for options that affect everything # [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client-server] # # include all files from the config directory # !includedir /etc/my.cnf.d
[***]
表示配置分组,如[mysqld]表示从下一行开始至出现 [***]
的行,均为服务端的配置行。本文件为默认配置,服务端只设置了两个选项,一个是datadir
(数据保存路径),一个是socket
(套接字文件路径);!includedir
表示其它附加的配置文件路径。本例中包含的/etc/my.cnf.d
文件夹中凡是以.cnf结尾的文件都会被当数据库的配置文件的一部分。如果这个文件夹中的配置文件定义的选项与主配置文件中有重复,则以该文件夹的配置为准。包含
”的概念,一般是为了实现配置文件的分类,提高配置文件的可读性。例如可以把关于服务端的配置选项全部放在server.cnf
中,将客户端的配置选项放在client.cnf
中。注:
1、关于搜索到的配置举例,请不要盲目复制
,因为很多选项都是基于特定的硬件(内存大小及CPU性能);
2、配置的优化是根据自身的业务环境而定,并且是在有性能监控数据及遇到的问题总结做支撑,例如:遇到错误提示“超出连接数”那就要修改最大连接数、遇到有大量请求在等待那就可能要修改最大并发数、发现内存及CPU占用过高那就可能要修改缓存大小,等等;
3、早期不用太热衷于玩弄各个高级配置项,基本配置都够你玩半年(配合web练习),天才除外;
mysql -u root -p
使用yum安装的mariadb,默认管理员root的密码为空,并且只允许本机连接,不允许远程连接。因此,我们需要为root用户配置密码,方法如下:
mysql –u root –p
提示输入密码时直接回车即可进入数据库;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
123456为密码,上述命令的意思是:允许密码为123456的root用户具有数据库中所有数据库的所有权限。
FLUSH PRIVILEGES;
需要先关闭虚拟机的防火墙,才能够连接成功(先前文章14、15节说过了这里不再重复,自行通过下方链接查阅)
https://blog.csdn.net/weixin_43576565/article/details/131376844
连接成功
具体方法:
1、进入etc目录下
cd /etc
2、编辑my.cnf文件
vi my.cnf
3、在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查
[mysqld]
skip-grant-tables
4、重启数据库
service mysqld restart
5、直接无密码登录数据库
mysql -uroot -p
6、查看数据库并使用mysql数据库表
mysql> show databases;
mysql> use mysql;
7、更新密码
mysql> update user set password=passworD("123456") where user='root';
#注意如果Mysql的版本是5.7及以上的话update语句如下:
update user set authentication_string=passworD("123456") where user='root';
#刷新数据库的系统权限相关表
FLUSH PRIVILEGES;
8、去my.cnf配置文件中删除使其登录时跳过权限检查的配置
9、重启mysql实现密码登录
service mysqld restart
show databases;
命令以;
结尾
注意database后面有个s,英文中表示复数的意思
整个命令顾名思议就是显示所有数据库,默认共4个数据库,各个数据库的意义前面已作基本介绍。
注:客户端中的命令不支持tab补全;表名及列名可以使用tab补全,但这个功能默认不开启,欲尝试自行搜索我的博客,篇幅问题这里不展开说。
create database mytest; #mytest为数据库名
drop database mytest; #mytest为数据库名
注意这里的database没有加s
已经成功创建mytest数据库
上面只是最简单的创建数据库命令,如果需要指定数据库的字符集则需要加相关参数。
source / sql-dftables.txt # /root/ sql-dftables.txt为数据库脚本文件
需要输入完整路径。如果脚本中只有表结构,则只会在数据库中创建表,如果脚本中既有表结构又有数据内容,则都会导入。数据库脚本文件其实就是数据库的各种命令的集合。
导入之前先使用use命令连接指定的数据库,即后面的导入操作就会导入至该数据库。
注:包括后面介绍关于数据库表的操作命令都需要先使用use命令,指定数据库。使用source命令,最后不用
;
结尾
为某数据库创建指定用户,基于安全考虑,不使用root用户进行业务操作,建议为业务数据库创建指定的用户,命令如下:
GRANT ALL PRIVILEGES ON mytest.* TO 'test2'@'localhost'IDENTIFIED BY '12345qwert';
或
GRANT SELECT,INSERT,UPDATE,DELETE ON mytest.* TO 'test2'@'%'IDENTIFIED BY '12345qwert';
命令解读如下:
ALL PRIVILEGES
SELECT,INSERT,UPDATE,DELETE
表明只允许查、增、改、删四个权限,其它不允许。ON
后面跟的数据库名 mytest.*
表示mystest的所有表都被允许,TO
后面@
之前表示的是用户名(不带引号)@
后面跟的是客户端位置(localhost
表示仅本机可连,%
表示任意远程主机,还可以指定某IP或IP段) BY
后面跟的是该用户的密码注:客户端中的命令不区分大小写,只是大家习惯将命令大写,内容小写提高整条命令的可读性。
显示数据库中的所有表:
show tables;
关于表的操作命令还有很多,如增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)不再演示,请自行搜索,如搜索“mysql常用命令”
数据库备份方法有很多,这里仅演示自带的备份工具备份完整的数据库(表结构及内容),命令如下:
mysqldump -u root -p mytest > /root/mytest_bak_20230711.sql
mysqldump
是一个独立的程序,因此这里看到的是系统命令行环境中。
-u root
是使用root命令登陆数据库来操作备份动作-p
是后面要输入密码,与mysql客户端类似mytest
是要备份数据库名root/mytest_bak_20230711.sql
是备份的目标文件,这是一个文本文件,只是习惯使用.sql
作为文件后缀标识,方便识别。mysqldump
还有很多用法,欲了解更多请自行搜索。source
即可。注意这一步需要推出数据库,不能在数据库内执行。
mysqldump -u root -p --all-databases > /root/alldatabases_bak_20230711.sql
mysqldump -u root -p mysql db user event > /root/mysql_bak_20230711.sql
mysqldump -uroot -p mysql --ignore-table=mysql.db --ignore-table=mysql.user > /root/123.sql
mysql > use db_name #输入需要还原/导入的数据库名
mysql > source /backup/mysqldump/db_name.db #输入还原/导入的数据库路径
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。