热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux环境中使用Mysql数据库

Linux下Mysql数据库MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司,目前属于Oracle公司,MySQL被广泛地应用在I

Linux下Mysql数据库

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司, 目前属于Oracle公司,MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

对应目前主流的LAMP架构来说,Mysql更是得到各位IT运维、DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始人已独立出来自己重新开发了一个MariaDB,而且使用的人数越来越多。而且MariaDB兼容mysql所有的功能和相关参数。

Mysql常用的两大引擎有MyISAM和innoDB,那他们有什么明显的区别呢,什么场合使用什么引擎呢?

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,如果执行大量的SELECT操作,MyISAM是更好的选择,支持表锁。

InnoDB提供事务支持事务,外部键等高级 数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。

MySQL安装方式有两种,一种是yum/rpm安装,另外一种是tar源码安装

Yum 安装方法很简单,执行命令如下

yum install –y mysql-server mysql-devel mysql

在这里插入图片描述

这个mysql安装到哪里去了呢
使用命令:

rpm -ql mariadb |more

在这里插入图片描述
mysql的配置文件位置

[root@localhost ~]# ll /etc/my.cnf
-rw-r--r--. 1 root root 570 930 21:21 /etc/my.cnf

/var/lib/mysql/是mysql的数据存放目录(这里面存放了许多库,库里有许多表)

[root@localhost ~]# cd /var/lib/mysql/
[root@localhost mysql]# ls
aria_log.00000001 ibdata1 ib_logfile1 mysql.sock ssrf
aria_log_control ib_logfile0 mysql performance_schema test

重启mysql的服务

[root@localhost mysql]# service mariadb restart
Redirecting to /bin/systemctl restart mariadb.service

直接输入mysql,是进入mysql这个库的终端,在这个终端里面我们可以对这个数据库进行操作

在这里插入图片描述
相关数据库操作

查看数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+

创建数据库

MariaDB [(none)]> create database chen;
Query OK, 1 row affected (0.07 sec)

进入到我们已经修改的数据库chen里面

MariaDB [(none)]> use chen;
Database changed

查看数据库中的表,当前数据库是新建的,所以表是空的。

MariaDB [chen]> show tables-> ;
Empty set (0.03 sec)

删除数据库

MariaDB [chen]> drop database chen;
Query OK, 0 rows affected (0.20 sec)

创建表,就相当于创建了一个表的结构

MariaDB [chen]> create table test_001 (name char(20),age char(20),job char(20));
Query OK, 0 rows affected (0.73 sec)

查看表

MariaDB [chen]> show tables-> ;
+----------------+
| Tables_in_chen |
+----------------+
| test_001 |
+----------------+
1 row in set (0.04 sec)

查看表的内容

MariaDB [chen]> select * from test_001;
Empty set (0.03 sec)

我们向表里面写入数据

MariaDB [chen]> insert into test_001 values ('zhangsan',27,'IT');
Query OK, 1 row affected (0.13 sec)MariaDB [chen]> insert into test_001 values ('lisi',30,'IT');
Query OK, 1 row affected (0.05 sec)MariaDB [chen]> insert into test_001 values ('wangyu',20,'enginer');
Query OK, 1 row affected (0.04 sec)MariaDB [chen]> insert into test_001 values ('wangyu',27,'enginer');
Query OK, 1 row affected (0.11 sec)

这次我们查看表 的内容

MariaDB [chen]> select * from test_001;
+----------+------+---------+
| name | age | job |
+----------+------+---------+
| zhangsan | 27 | IT |
| lisi | 30 | IT |
| wangyu | 20 | enginer |
| wangyu | 27 | enginer |
+----------+------+---------+
4 rows in set (0.04 sec)

我们只想查看表中第一行的内容

MariaDB [chen]> select * from test_001 limit 1;
+----------+------+------+
| name | age | job |
+----------+------+------+
| zhangsan | 27 | IT |
+----------+------+------+
1 row in set (0.04 sec)

现在我们想要查询名字为zhangsan

MariaDB [chen]> select * from test_001 where name='zhangsan';
+----------+------+------+
| name | age | job |
+----------+------+------+
| zhangsan | 27 | IT |
+----------+------+------+
1 row in set (0.06 sec)

查询名字为wangyu的

MariaDB [chen]> select * from test_001 where name='wangyu';
+--------+------+---------+
| name | age | job |
+--------+------+---------+
| wangyu | 20 | enginer |
| wangyu | 27 | enginer |
+--------+------+---------+
2 rows in set (0.06 sec)

我们只想查询名字为wangyu,年龄为20的


MariaDB [chen]> select * from test_001 where name='wangyu' and age=20;
+--------+------+---------+
| name | age | job |
+--------+------+---------+
| wangyu | 20 | enginer |
+--------+------+---------+
1 row in set (0.05 sec)

只是查询名字

MariaDB [chen]> select name from test_001;
+----------+
| name |
+----------+
| zhangsan |
| lisi |
| wangyu |
| wangyu |
+----------+
4 rows in set (0.06 sec)

查看这个表下面有多少条记录


MariaDB [chen]> select count(*) from test_001;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.04 sec)

接下来我们想要删除lisi这一行

MariaDB [chen]> delete from test_001 where name="lisi";
Query OK, 1 row affected (1.95 sec)

注意:drop table test_001 (删除表)
delete from test_001 (清空表内容)

看表的结构

MariaDB [chen]> describe test_001;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(20) | YES | | NULL | |
| age | char(20) | YES | | NULL | |
| job | char(20) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.33 sec

注意:describe test_001与desc test_001同理

查看表的创建语句

MariaDB [chen]> show create table test_001;
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_001 | CREATE TABLE `test_001` (`name` char(20) DEFAULT NULL,`age` char(20) DEFAULT NULL,`job` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)

show engines;查看数据库引擎

查看这个表里char开头的

MariaDB [chen]> show variables like "%char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)

在mysql配置文件下去修改字符集,加入内容

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8

在这里插入图片描述
修改完配置记得重启

[root@localhost mysql]# service mariadb restart
Redirecting to /bin/systemctl restart mariadb.service

修改完以后数据库就可以显示中文了。

我们给客户机授权,使得客户机可以登录

MariaDB [chen]> grant all on *.* to chen@192.168.0.159 identified by "1";
Query OK, 0 rows affected (0.03 sec)

然后我们去客户机登录,登录成功

[root@localhost ~]# mysql -h192.168.0.155 -uchen -p1
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

刷新权限

MariaDB [chen]> flush privileges;
Query OK, 0 rows affected (0.06 sec)

备份数据库

mysqldump -uroot -p chen>lin.sql

当删除数据库中的表时候,还原数据库

MariaDB [(none)]> source /root/lin.sql;
Query OK, 0 rows affected (0.58 sec)


推荐阅读
  • 在Linux系统中,MySQL的用户权限管理是运维人员必须掌握的关键技能之一。本文详细介绍了MySQL用户和权限管理的相关概念,包括MySQL用户的概念及其与VSFTPD虚拟用户的相似性,以及密码管理的重要性。此外,还深入探讨了如何通过命令行工具和配置文件进行用户权限的设置和调整,确保系统的安全性和稳定性。 ... [详细]
  • 在数据表中,我需要触发一个操作来刷新特定列的数据。例如,对于以下表格:| ID | Name | IsDeleted ||----|-------|-----------|| 1 | test | True || 2 | test2 | False |我希望在点击“更新”按钮时,能够仅刷新选定行的“IsDeleted”列。这将有助于确保数据的实时性和准确性。 ... [详细]
  • shell脚本实战 pdf_Shell 脚本操作数据库实战
    安装mariadb数据库(默认没有密码,直接mysql即可进入数据库管理控制台)yuminstallmariadbmariadb-serv ... [详细]
  • MFC程序连接MySQL成功实现查询功能,但无法实现修改操作——详解查询语句在MySQL中的使用过程
    selectxxx,xxx,xxxfromxxxwherexxxxxx,xxxxxx程序的日常开发中,我们经常会写到各种各样的简单的,复杂的查询sql语 ... [详细]
  • MySQL/MariaDB/PerconaDB提权条件漏洞
    背景  2016年11月01日,国外安全研究员DawidGolunski在MyS ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • MySQL 错误:用户 'root' 使用密码时访问被拒绝的原因及解决方法
    在配置CentOS 7上的MariaDB(MySQL)时,用户可能会遇到“1045 - Access denied for user 'root'@'localhost' (using password: YES)”的错误。这通常是由于密码设置不正确或权限配置问题导致的。本文将详细分析该错误的原因,并提供多种解决方法,包括重置root密码、检查配置文件和修复权限设置等。 ... [详细]
  • 本周,我深入研究了 ECharts 插件的使用方法,整体感觉插件操作较为简便,但后台算法较为复杂。此外,我还学习了 MySQL 函数的新应用,进一步提升了数据库操作的灵活性。同时,分享了自己在 Python 书籍外借过程中的体验,总结了一些实用的借阅技巧和心得。 ... [详细]
  • 在尝试使用指定的数据库进行登录时,遇到了权限问题。具体表现为用户 'lzldb'@'%' 无权访问数据库 'lzldb',错误代码为 1044 (42000)。命令行参数 `-D` 指定了数据库名称,但未能成功连接。建议检查用户的权限配置,确保其具有对目标数据库的访问权限。此外,使用密码时应谨慎处理,避免在命令行中明文显示。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 数据库进入全新时代,腾讯云发布五大数据库提前布局
    8月28日,腾讯云数据库在京正式启动战略升级,宣布未来将聚焦云原生、自治、超融合三大战略方向,以用户为中心,联接未来。并在现场面向全球用户同步发布五大战略级新品,包括数据库智能管家 ... [详细]
  • 本文介绍了MySQL中一些基本但重要的数学函数,包括角度与弧度之间的转换函数RADIANS(X)和DEGREES(X),以及正弦函数。RADIANS(X)用于将角度值转换为弧度值,而DEGREES(X)则将弧度值转换为角度值。这些函数在处理涉及角度和弧度的计算时非常有用,能够简化复杂的数学运算。此外,正弦函数在三角学和工程计算中也具有广泛的应用,能够帮助用户更高效地进行数据处理和分析。 ... [详细]
author-avatar
ik人生如梦场
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有