Mysql之数据库的安装与基本操作

## 数据库

  • 数据库是按照数据结构来组织、存储和管理数据的集合,可以对所存储的数据进行增、删、改、查等操作

  • 常用数据库

    • 关系型数据库(SQL)

      • Access

      • MySQL

      • MariaDB

      • SqlServer

      • Oracle

    • 非关系型数据库(NoSQL)

      • redis
      • mongodb
      • Cassandra
      • memcached
  • 相关名词

    • DBMS:数据库管理系统,如mysql等

    • DBS:数据库系统,由数据库、数据库管理系统、数据库管理员等构成

    • DBA:数据库管理员

    • DB:数据库,是统一管理的相关数据的集合

    • 表:每个表就是一个关系,是记录数据和关系的容器

    • 行(row):每一行称为一个记录或元组

    • 列(column):每一列称为一个属性

    • 域:数据的取值范围

    • 主键:可以唯一标识记录的属性

    • 索引:单独存储的能够快速进行查询的数据项

Mysql

  • 最流行的开源关系型数据库系统,全球排名前 10 的 Web 站点中有 9 个使用该数据库

  • 由瑞典公司MySQL AB公司开发,合伙人David Axmark, Allan Larsson 和 Michael Widenius

  • 美国SUN公司于2008年收购MYSQL,美国ORACLE公司于2010年收购SUN公司,当前MySQL属于ORACLE 公司

  • 多种编程语言支持mysql(C、C++、JAVA (JDBC)、.NET (ODBC)、PHP、PYTHON、PERL)

  • 发行版本分类

    • 社区版 (无需注册免费下载)
      • MySQL Community Edition (GPL)
      • MySQL Cluster (GPL)
    • 企业版 (可以注册后免费下载,商业收费)
      • MySQL Enterprise Edition
      • MySQL Cluster CGE
    • 又细分为Alpha版、Beta版、RC版、GA版
      • Alpha 版:Alpha版一般只在公司内部对产品进行测试,不对外公开。
      • Beta版:Beta版一般是完成功能的开发和所有的测试工作之后的产品,提供给用户体验与测试,以便更全面地测试软件的不足之处或存在的问题
      • RC版:正式发布前的版本,对Beta版进行修复和改进的版本
      • GA版:GA版是软件产品正式发布的版本,也称生产版本的产品
  • 常用链接

Centos7 下mysql的安装

  • 官网下载安装包并上传至服务器
    image-20191125151643869

  • 安装所需依赖包
    image-20191125151816543

  • 解压缩
    image-20191125151856582

     tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar 
    
  • 使用rpm命令或yum命令进行安装
    image-20191125152752931

    yum install ./mysql-community-{client,server,common,libs}-*
    

    若出现如下错误可采取卸载mariadb-devel的方法卸载mariadb-devel
    image-20191125152813942
    image-20191125153017883

  • 启动服务
    image-20191125153432297

    • 常用操作
      • systemctl start mysqld 启动mysql
      • systemctl stop mysqld 停止mysql
      • systemctl restart mysqld 重新启动mysql
      • systemctl status mysqld 查看mysql状态
      • systemctl enable mysqld mysql开机自启
      • systemctl disable mysqld mysql开机不启动
  • 登录mysql并修改密码

    • 获取生成的随机密码
      image-20191125153816697
    • 登录(输入生成的随机密码登录)
      image-20191125153937547
    • 修改新密码
      image-20191125154301788
  • mysql默认密码复杂度规则(mysql5.6.6及以后的版本使用validate_password进行密码强度验证)
    image-20191125154901050

    show variables like "%password%";
    +----------------------------------------+-----------------+
    | Variable_name                          | Value           |
    +----------------------------------------+-----------------+
    | default_password_lifetime              | 0               |
    | disconnect_on_expired_password         | ON              |
    | log_builtin_as_identified_by_password  | OFF             |
    | mysql_native_password_proxy_users      | OFF             |
    | old_passwords                          | 0               |
    | report_password                        |                 |
    | sha256_password_auto_generate_rsa_keys | ON              |
    | sha256_password_private_key_path       | private_key.pem |
    | sha256_password_proxy_users            | OFF             |
    | sha256_password_public_key_path        | public_key.pem  |
    | validate_password_check_user_name      | OFF             |
    | validate_password_dictionary_file      |                 | #用于验证密码强度的字典文件路径
    | validate_password_length               | 8               | #密码长度最小8位
    | validate_password_mixed_case_count     | 1               | #至少包含1个大写字母1个小写字母
    | validate_password_number_count         | 1               | #至少包含1个数字
    | validate_password_policy               | MEDIUM          | #密码强度检查等级0:LOW,1:MEDIUM(默认值),2:STRONG
    | validate_password_special_char_count   | 1               | #至少包含一个特殊字符
    +----------------------------------------+-----------------+
    #使用set global 变量名=值;进行修改(临时生效)
    #修改配置文件/etc/my.cnf文件永久保存
    
  • 关闭 validate_password 密码验证(有风险)
    image-20191125155930984
    image-20191125160240244
    image-20191125160331753
    再次修改密码,使用空密码依然被允许
    image-20191125160500093
    刷新使修改生效
    image-20191125160737112

  • 修改数据库默认字符集支持中文
    image-20191125161034800
    image-20191125161010553
    image-20191125161055107
    image-20191125161149255

  • root密码遗忘后找回的方法
    image-20191125161323584
    image-20191125161514598

    systemctl set-environment MYSQLD_OPTS='--skip-grant-tables --skip-networking'
    #设置临时跳过密码验证登录,--skip-networking可省略
    

    若设置关闭validate_password,需要注释该设置
    image-20191125161715578
    image-20191125161744617
    image-20191125161820459
    即可无密码登录
    image-20191125161852934
    更改密码
    image-20191125162213200

  • 修改mysql登录提示符

    image-20191125190625003

    image-20191125190554632

    export MYSQL_PS1="\u@\h[\d]>"
    

    image-20191125190650126

    image-20191125190900715

    (如果只想修改个别用户的登录提示符,则在对应用户的环境变量文件中修改即可,windows环境同样适用)

  • 允许用户远程登录

    • 允许用户远程登录
      image-20191125204506034

    • 关闭防护墙或添加对应规则

      image-20191125204935586

      image-20191125205056802

      mysql -u root -p 
      rename user root@localhost to root@'%';
      select user,host from mysql.user;
      firewall-cmd --zone=public --add-port=3306/tcp --permanent
      firewall-cmd --reload
      
  • 用户远程登录

    image-20191125210641642

  • 2003错误
    image-20191125210214763
    问题: 配置了skip_networking或者bind_address
    解决方法:
    image-20191125210327230

    image-20191125210413132

  • 1045错误
    image-20191125210440020

    问题:输入密码错误

win10下mysql的安装

  • 从官网下载合适的安装包
    image-20191125142333236

  • 解压缩并放置指定路径
    image-20191125142411464
    image-20191125142420049
    image-20191125143108492

  • 添加环境变量(windows10)

    • 右击我的电脑,选择属性
      image-20191125143151601

    • 选择高级系统设置
      image-20191125143229967

    • 选择环境变量
      image-20191125143314483

    • 选择path变量并单击编辑命令
      image-20191125143456141

    • 添加mysql的环境变量并保存
      image-20191125143619832

    • 单击确认进行保存(需要在环境变量页面单击确认才真正保存)

      image-20191125185510827

  • 为mysql添加配置文件my.cnf
    image-20191125143911249
    image-20191125144624217

    [mysqld]
    basedir=D:/Program/mysql5.7 #mysql所在路径
    datadir=D:/Program/mysql5.7/data #data文件所在目录
    character-set-server=utf8 #设置默认字符集
    
  • cmd中运行安装命令进行安装(需要管理员权限,需要安装Visual C++2013)
    image-20191125145004964

    mysqld --install MySQL #进入mysql的bin目录下执行安装命令
    
    

    若被杀毒软件阻止设置允许或关闭杀毒软件

  • 初始化数据库
    image-20191125145805573

    mysqld --initialize-insecure #初始化数据库
    
    
  • 启动服务(win+R打开运行执行services.msc打开服务窗口)
    image-20191125150017474
    image-20191125150036074

  • 连接数据库(首次进入root用户密码为空)
    image-20191125150127142

  • 更改root用户密码
    image-20191125150410651

    alert user root@localhost identified by '123456'; #修改密码为123456,下次登录时使用密码登录
    
    

    image-20191125150534564

  • 使用图形化软件连接(navicat)
    image-20191125150910173
    image-20191125150927046
    image-20191125151034530
    image-20191125151043837
    image-20191125151059074
    image-20191125151121609

数据库基本操作

  • mysql 用于连接数据库

    • -u USERNAME #指定用户或--user=USERNAME
    • -h HOST #指定连接主机 或 --host=HOST
    • -p [PASSWD] #用户密码,省略PASSWD时将会以隐式方式输入密码 或--PASSWORD=PASSWD
      image-20191125193206398
  • status或\s命令查看服务器当前状态
    image-20191125193250902

    image-20191125200646840

  • quit或exit命令退出mysql
    image-20191125193346253
    image-20191125193416835

  • show databases命令查看所有数据库
    image-20191125193957305

  • use命令使用(进入)数据库
    image-20191125194117077

  • show tables 命令查看数据库中的表
    image-20191125194201559

    image-20191125194311624

  • 查看正在使用的数据库(所处的数据库)
    image-20191125194409324

    image-20191125194445211

  • 查看表中的列(属性)
    image-20191125194607305

  • 查看表中的记录
    image-20191125194707312
    或使用\G使用另一种显示格式
    image-20191125194737161

  • 查看数据库存放位置
    image-20191125195603554

  • 创建数据库

    • 命令:CREATE DATABASE [IF NOT EXISTS] DB_NAME;
      • IF NOT EXISTS 表示如果表已经存在则不再重复创建
        image-20191125200112819
  • 删除数据库

    • 命令:DROP DATABASE DB_NAME;
      image-20191125200311280
  • 查看当前连接用户
    image-20191125200417611

  • 查看当前服务器日期和时间
    image-20191125200458540

  • 帮助命令
    image-20191125200546333

    image-20191125200604444

  • \d修改结束符(默认分号)
    image-20191125200751981

  • tee命令将屏幕输出结果另存到指定文件,结束时输入notee
    image-20191125200929088

  • \c取消当前语句输入
    image-20191125204054043

  • system COMM 执行操作系统命令
    image-20191125204155983

posted @ 2019-11-25 21:12  MirL  阅读(282)  评论(0编辑  收藏  举报