设为首页 收藏本站
查看: 1061|回复: 0

[经验分享] linux中MySQL小结

[复制链接]

尚未签到

发表于 2018-10-7 11:27:14 | 显示全部楼层 |阅读模式
MySQL的相关概念介绍
  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB应用方面,MySQL是最好的 RDBMS (Relational DatabaseManagement System,关系数据库管理系统) 应用软件。
  MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  所谓的"关系型"可以理解为"表格"的概念, 这里的关系概念可以理解成生活中人及事物之间的关系,是一种通用的概念。一个关系型数据库由一个或数个表格组成, 具体以学生这一实体为例。比如新学期开学,老师第一次上课,每一个学生都是陌生的脸孔,如何确认班上每一个学生,除了脸部识别之外,老师唯一确认一个学生依靠的是学生的学号,一个学号代表一个学生,学号没有重复,叫到一个学号每次只有一个学生答到,这样班级的每一个学生都可以被确定,所以id就是主键,唯一识别某一个具体的学生。但是这样在确认了学生之后还是不够的,每个学生都有自己的姓名、性别、年龄、联系方式,依靠这些信息虽然不能唯一识别一个具体的学生,但是却是每个学生都需要有的信息,这就是学生这一实体的属性,属性之间是互相不能依靠逻辑推出信息的,例如仅仅知道学生性别并不能根据性别而推测出学生的年龄,姓名,等其他属性的信息,如果出现除了主键之外依据某一属性可以推测出其他属性的信息的现象则叫数据冗余,需要合并或者删除属性,从而实现合理全面的数据存储。
  如图所示的一个表格:
DSC0000.png

  表头(header): 每一列的名称即属性;
  列(row): 具有相同数据类型的数据的集合;
  行(col): 每一行用来描述某个人/物的具体信息;
  值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。
MariaDB
  从 MySQL 转向 MariaDB的代表厂家:谷歌(2013年9月)、RedHat(2013年6月)、维基百科(2013年4月)
  MySQL在 2008年被Sun以10亿美金所收购,MySQL创始人Michael Widenius则不满Sun开发团队脚步过慢,愤而离职成立开源数据库联盟,另外从现有 MySQL 程序代码中,开发出另一个延伸分支版本,也就是名为玛莉亚数据库的企业级开源数据库。
  玛莉亚数据库如同 MySQL的影子版本,玛莉亚数据库是 MySQL的一个分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容。
脚本实现centos 7.3及centos 6.9二进制安装mariadb
  #!/bin/bash
  #判断系统是否已经安装mariadb数据库软件,若安装则进行提醒,并退出该脚本。
  rpm -q mariadb >> /dev/null&& echo `rpm -q mariadb` is installed && exit 0
  ###注意:rpm查询,只能查询以rpm机制安装的软件,以其他方式安装的软件可能查询不到。
  #创建数据库程序的用户,并指定其工作目录与登录方式
  useradd -d /app/mysqldb -r -m -s/sbin/nologin mysql
  #切回root用户目录下
  cd
  #下载mariadb压缩包,并将其解压缩到指定目录/usr/local
  wgetftp://172.17.0.1/pub/Sources/6.x86_64/mariadb/mariadb-5.5.57-linux-x86_64.tar.gz
  tar -xf/root/mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
  cd /usr/local
  #创建软链接
  ln -s mariadb-5.5.57-linux-x86_64mysql
  cd /usr/local/mysql
  mkdir /etc/mysql/
  #拷贝配置文件样例
  cp support-files/my-huge.cnf/etc/mysql/my.cnf
  #使用sed直接对样例/etc/mysql/my.cnf进行编辑,使其符合自身需求
  sed -i '/\[mysqld\]/a\datadir\\=\ \/app\/mysqldb\ninnodb_file_per_table\ \=\ on\nskip_name_resolve\ \=\ on'/etc/mysql/my.cnf
  #初始化数据库
  scripts/mysql_install_db--user=mysql --datadir=/app/mysqldb
  #创建mariadb的服务程序,并设置在哪些运行级别下可以自行启动
  cp support-files/mysql.server/etc/init.d/mysqld
  chkconfig --add mysqld
  #判断系统版本,以便创建不同的数据库日志文件
  if [ `sed -r 's/.*([0-9]+)\..*/\1/' /etc/centos-release` -eq 7 ]; then
  mkdir /var/log/mariadb/
  chown mysql /var/log/mariadb/
  systemctl start mysqld
  else
  touch /var/log/mysqld.log
  chown mysql /var/log/mysqld.log
  service mysqld start
  fi
  #设置环境变量
  echo'PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
  . /etc/profile.d/mysql.sh
  #运行安全初始化脚本
  echo -e"\ny\n123456\n123456\ny\nn\nn\ny" | mysql_secure_installation
  #运行mysql服务
  mysql -uroot -p
MySQL脚本的基本组成
  与常规的脚本语言类似, MySQL 也具有一套对字符、单词以及特殊符号的使用规定, MySQL 通过执行 SQL 脚本来完成对数据库的操作, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为 .sql。
标识符
  标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其他地方引用。MySQL标识符命名规则稍微有点繁琐, 这里我们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。
  对于标识符是否区分大小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大小写是敏感的。
关键字:
  MySQL的关键字众多, 这里不一一列出, 在学习中学习。 需要注意的是,这些关键字有自己特定的含义, 尽量避免作为标识符。
语句:
  MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操作, 他是由 SQL 标准语句 + MySQL 扩展语句组成。
函数:
  MySQL函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。
MySQL中的数据类型
  MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
数字类型
  整数: tinyint、smallint、mediumint、int、bigint
  浮点数: float、double、real、decimal
  日期和时间: date、time、datetime、timestamp、year
  字符串类型
  字符串: char、varchar
  文本: tinytext、text、mediumtext、longtext
  二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
  (由于数据类型较多,限于文章篇幅有限,具体数据类型请自行查看专业书籍)
常用基本操作
1、显示数据库
  show databases;
2、选择数据库
  use 数据库名;
3、显示数据库中的表
  show tables;
4、显示数据表的结构
  describe 表名;
5、显示表中记录
  SELECT * FROM 表名
6、建库
  create databse 库名;
7、建表
  create table 表名 (字段设定列表);
mysql>create table name(    -> id int auto_increment not null primary key ,    -> uname char(8),    -> gender char(2),    -> birthday date );Query OK, 0 rows affected (0.03 sec)mysql> show tables;+------------------+| Tables_in_userdb |+------------------+| name             |+------------------+1 row in set (0.00 sec)mysql> describe name;+----------+---------+------+-----+---------+----------------+| Field    | Type    | Null | Key | Default | Extra          |+----------+---------+------+-----+---------+----------------+| id       | int(11) | NO   | PRI | NULL    | auto_increment || uname    | char(8) | YES  |     | NULL    |                || gender   | char(2) | YES  |     | NULL    |                || birthday | date    | YES  |     | NULL    |                |+----------+---------+------+-----+---------+----------------+4 rows in set (0.00 sec)注: auto_increment 自增  primary key    主键 8、增加记录
  insert into name(uname,gender,birthday) values('张三','男','1971-10-01');
9、修改记录
  update name setbirthday='1971-01-10' where uname='张三';
10、删除记录
  delete from namewhere uname='张三';
11、删除表
  drop table 表名
12、删除库
  drop database 库名;
13、备份数据库
  mysqldump -uroot -p --opt 数据库名>备份名; //进入到库目录
14、恢复
  mysql -u root -p数据库名 grant select,insert,update,delete on *.* to user001@"%" Identified by "123456";  例2、增加一个用户user002密码为123456,让此用户只可以在localhost上登录,也可以设置指定IP,并可以对数据库test进行查询、插入、修改、删除的操作 (localhost指本地主机,即MySQL数据库所在的那台主机)
  //这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过MYSQL主机来操作test库。
  //首先用以root用户连入MySQL,然后键入以下命令:
  mysql>grant select,insert,update,delete on test.* to user002@localhost identified by "123456";  注: 其次也可以采用修改表的方式,处理用户的登录方式:
  数据库: Mysql
  表:     User
  修改:   User表中的Host列的值来现实登录入口



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614274-1-1.html 上篇帖子: MySQL常用语句命令 下篇帖子: 实现基于MySQL管理rsyslog日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表