SQL:Linux下,MySQL 安装、链接、远程链接、修改初始密码,找回 root 密码、创建数据库用户、genelog

  • yum  search  +  服务:查询服务是否存在;
  • yum  remove  +  服务:卸载服务;
  • 使用 service 操作服务时,服务的名称后要加上字符 d,如启动:service  mysqld  start ;
  • cat /vir/log/mysqld.log  |  grep  +  关键字:从 MySQL 的操作日志中查询内容(关键字指代内容);
  • history:查看所有输入的历史记录(可显示的内容,一般输入密码时不显示内容,则查看不到);

一、Mysql 安装及链接

 1)基本操作

  • CentOS7 默认安装的是 mariadb 数据库;

 

 2)安装 MySQL 数据库

  1. 查询并先卸载 matiadb 数据库:
    1. yum  search  mariadb
    2. yum  remove  mariadb-libs.x86_64
  2. 下载 Mysql 源
    1. 从网站  https://dev.mysql.com/downloads/repo/yum/  选出合适的版本,
    2. 下载源:  wget  +  具体下载网站下载
  3. 安装 Mysql 源
    • 将源放入系统,系统通过源来安装 Mysql 数据库
    • yum  localinstall  mysql57-community-release-el7-8.noarch.rpm
  4. 安装 Mysql 服务
    • yum  install  mysql-communitu-server
  5. 查找 MySQL 的默认密码
    • 安装 MySQL 时随机生成的字符串,从安装日志中查找
      • cat /var/log/mysqld.log  |  grep  "password"

 

 3)修改密码

  1. 查看初始密码
    • grep 'temporary password' /var/log/mysqld.log
  2. 登录到 MySQL
    • mysql -uroot -p
    • 输入初始密码
  3. 修改密码
    • alter user 'root'@'localhost' identified by '密码';
  4. 如果提示密码简单:Your password does not satisfy the current policy requirements,但是就想使用简单密码;
    • 对于 5.7 版本:

    • 修改两个参数,然后再进行密码修改;
    1. set global validate_password_policy=0;
    2. set global validate_password_length=1;
    3. alter user 'root'@'localhost' identified by '密码';
    • 如果是 8.0 版本

    • 使用 5.7 版本的修改方则会报错:
    1. ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
    2. ERROR 1193 (HY000): Unknown system variable 'validate_password_length'
      • 原因:8.0版本的这两个变量是不存在的,已经替换成其他的变量名了:validate_password%;
    • 修改:

      • 查看变量:validate_password%(当然了,这里是事后查看的,密码没修改前的不让看的)

        • SHOW VARIABLES LIKE 'validate_password%';
      • 修改:

        • set global validate_password.policy=0;
          set global validate_password.length=1; 
          alter user 'root'@'localhost' identified by '密码';

           

  1. 其中语句alter user user() identified by "123456";中的 user() 不能是 root@localhost 。
  2. 提示密码太简单

 

 

 4)连接到 MySQL 服务

  • mysql  -uroot  -p:然后输入服务器密码,连接到 Mysql 服务,之后可以使用 SQL 语句进行操作;
  • mysql -h+主机IP -uroot -p: 开启远程访问,就是可以指定连接某一个主机;
  • SLQ 语句结尾处需要加 “;”
  1. 密码:是 Mysql 数据库的密码;
  2. 输入:help,查看Mysql 命令
  3. \q 或者 exit:退出  Mysql  服务;
  4. show databases:查看所有数据库;
  5. use + 数据库名:使用数据库;
  6. show tables:查看数据库中的所有的表;
  7. flush privileges:刷新权限;(重启 mysqld 服务也可以刷新权限)

 

  •  通过修改用户表(user),添加用户使用权限

  1. 进入数据库,查看被允许访问该数据库的主机:select Host, User from user \G;;(Host:表示可以访问的主机)
  2. updata user set host = '%' where Host = "localhost" and User = "root";:将允许 root 用户的 localhost 主机,改为所有主机都访问该数据库;(注:有时因为防火墙限制,并不能让所有的主机都访问该数据库,可先暂时关闭防火墙
    • 查看防火墙是否开启:
      • ps -ef | grep firewalld
    • 关闭防火墙:
      • service firewalld stop
  3. 刷新权限:
    1. 在数据库中刷新
      • flush privileges;
    2. 退出数据库,然后重启
      • exit
        service mysql restart 
  • 忘记 root 密码:通过修改 mysql 的配置进去 mysql 服务

  1. vim /etc/my.cnf:编辑配置文件,在文件最后增加 “skip-grant-tables”(跳出授权表的认证);
  2. 重新登录 mysql 服务时不需要输入密码;

 

  • 修改 root 账号登录 mysql 服务的密码(在 mysql 服务中操作

  1. update user set authentication_string = password("新密码") where user = 'root';
  2. flush privileges;

 

 

二、远程连接

  •  远程链接:一般所有的服务都安装在服务器上,想从本地连接服务器上的服务,需要借助远程连接
  • 从本地连接到远程服务器时,需要先在本地开通远程连接的服务;
  • 连接远程的服务器:mysql -h+服务器IP -u+账号名 -p .
  • 例:mysql -h192.168.108.129 -uroot -p

 

三、开启 Genelog

  • Genelog:记录关于数据库的查询、编辑、删除等操作的所有 SQL 语句;
    • 一般不会开启开功能,因为log的量会非常庞大;但个别情况下可能会临时的开一会儿general log以供排障使用; 
    • 相关参数一共有3:general_loglog_outputgeneral_log_file

 1)Genelog 服务:

  • show variables like 'general_log';  -- 查看日志是否开启
    
    show variables like 'log_output';  -- 看看日志输出类型  table或file
    
    show variables like 'general_log_file';  -- 看看日志文件保存位置
    
    set global general_log_file='tmp/general.lg'; -- 设置日志文件保存位置
    
    set global general_log=on; -- 开启日志功能
    
    set global log_output='table'; -- 设置输出类型为 table
    
    set global log_output='file';   -- 设置输出类型为file

     

  • 数据库线程

    • show processlist;  -- 查看当前数据库线程状态

       

  • 慢查询

    • 在 MySQL 数据库中慢查询是在日志中记录执行速度慢的 SQL 语句,这个功能需要被开启才能被使用;
    • 配置慢查询
      • 文件一般是是 my.cnf 找到 [mysqld] 下面加上如下代码:
      • log slow queries = /var/lib/mysql/mysql-slow.log
        long_query_time = 10

         

 2)在数据库服务中创建用户

  • 创建用户(例):create user 'hyc'@'%' identified by '密码';; 
    • 该用户只是在数据库中使用;
  • 给用户赋予权限:great

  1. great all privileages on *.* to 'hyc'@'%' identified by '密码' with great option;:赋予用户('hyc'@'%' )可访问任何库、任何表;(所有的操作)
  2. great select on *.* to 'hyc'@'%' identified by '密码' with great option;:赋予用户('hyc'@'%')查询的权限;(select/insert/update/delete 等,可赋予多种权限)
  3. flush privileges;:刷新权限;

 

  • 收回用户的权限:revoke

  1. revoke all privileges on *.* FROM hyc;:收回用户 hyc 的所有权限;
  2. flush privileges;:刷新权限;

 

 

四、数据库客户端管理工具

  • SQLyog(免费,不分 Windows 和 Linux)
  • Navicat(收费)
  • HeidiSQL
  • Sequal  Pro(mac 下专业的数据库管理软件)
  • phpMyadmin(国外最常用的Web 的数据库管理工具)

 

posted @ 2018-09-09 19:43  何永灿  阅读(533)  评论(0编辑  收藏  举报