MySQL

MySQL

环境搭建

  • Linux

    • 下载安装包并离线安装
      wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.20-1ubuntu14.04_amd64.deb-bundle.tar
      tar -xvf mysql-server_5.7.20-1ubuntu14.04_amd64.deb-bundle.tar
      dpkg -i *.deb
    • 在线安装
      apt-get install mysql-server mysql-client libmysqlclient-dev
      安装过程中根据提示输入 mysql 用户中的 root 用户的密码
      • 启动服务
        • 方法一:使用 mysqladmin 启动
          mysqladmin start
        • 方法二:启动服务
          /etc/init.d/mysql start
      • 重启服务
        • 方法一:使用 mysqladmin 重启
          mysqladmin restart
        • 方法二:重启服务
          /etc/init.d/mysql restart
      • 关闭服务
        mysqladmin shutdown
  • Windows

    • 离线安装
      1. 下载 mysql-8.0.13-winx64.zip 并解压
      2. 初始化 data 目录
        ./bin/mysqld --initialize-insecure
      3. 独立(非服务模式)运行
        ./bin/mysqld --standalone --console
        • 安装至系统服务
          ./bin/mysqld --install
          • 启动系统服务
            net start mysql
        • 删除系统服务
          ./bin/mysqld --remove
          ./bin/mysqld --remove MySQL
      4. 登录/连接 mysql 控制台
        mysql -uroot

控制台(mysql)操作

  1. 登录/连接 mysql 控制台环境

    • 场景一:指定的 mysql 用户 root 已设置密码,需以密钥的方式登录
      mysql -uroot -p
      mysql -u root -p
      使用 test 用户登录远程主机 192.168.1.101(使用默认端口号 3306)的 mysql 服务
      mysql -h 192.168.1.101 -u test -p
      根据提示输入密码,验证通过后进入 mysql 命令行控制台界面中
    • 场景二:登录的 mysql 用户(root)未设置密码
      mysql

      参数 “-u” 指定登录用户名称,默认使用 mysql 用户中的 root 用户

  2. 操作、命令

    • 执行 sql 语句(参考 MySql 语法

      -- 显示所有数据库
      show databases;
      
      -- 打开/使用 mysql 数据库(即切换当前所使用的数据库,也可通过 use 其他数据库来直接切换当前所使用的数据库)
      -- 打开之后,不指定数据库名如 "select * from user;" 默认使用当前打开的数据库中的表 user;也可在未打开任何数据库的情况下,直接指定数据库名如 "select * from mysql.user;"。)
      use mysql;
      
      -- 显示当前已打开的数据库中所有表
      show tables;
      
      -- 显示数据表 user 的结构
      describe user;
      -- 显示数据表 user 的列
      -- show columns from user;
      
    • 查询(mysql 系统)用户
      select Host, User, Password as Pass from mysql.user;

      命令行中,以 \G 结尾,表示垂直显示查询结果,如
      select top(3) * from mysql.user\G

    • 执行 sql 脚本 data.sql
      source data.sql

    • 将查询结果导出到文件 user.txt 中
      select Host, User, Password as Pass from mysql.user into outfile './user.txt';

      若导入导出文件失败,且抛出 “ERROR 1290” 异常,解决方法见 导出文件时抛出异常 “ERROR 1290 (HY000): …
      导出的文件见 /var/lib/mysql/user.txt

    • 导入导出 csv 文件

      -- 导出 users 表中数据至 users.csv 文件中
      select * from users into outfile '/tmp/users.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';
      
      -- 将 users.csv 文件中数据导入到 users 表中
      load data infile '/tmp/users.csv' into table users fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';
      
    • 将 table02 中的数据备份到 table02b 中
      create table table02b(select * from table02);

    • 查看当前所有连接信息
      status
      查看当前所有连接进程、等待时间、所处状态、是否 locked
      show full processlist

  3. 退出控制台环境
    exit

控制台(其他)操作

  • 使用 mysqldump 备份还原数据库
    • 备份数据库
      mysqldump -u root commerce > backup.sql
    • 还原数据库
      mysql -u root < backup.sql

配置

  • 使用 mysqladmin 修改 mysql 用户密码
    mysqladmin -u[用户名] -p[旧密码] password [新密码]

  • 实时查看 mysql 当前连接数

    • 方法一
      • 查看当前所有连接的详细资料
        ./mysqladmin -uroot -p -h192.168.1.101 processlist
      • 只查看当前连接数(其中 Threads 即为连接数)
        ./mysqladmin -uroot -p -h192.168.1.101 status
    • 方法二

      或直接使用 mysql 控制台执行查询连接进程信息,并导出到文件 conns.txt 中

      `mysql -e 'show full processlist;' > conns.txt`
      
  • 配置 mysql 最大连接数

    1. 编辑 my.cnf(windows 环境下为 my.ini),修改如下
      max_connections = 100