zoukankan      html  css  js  c++  java
  • 【Linux】-- 在linux上安装mysql及基本操作

    1、MySQL的安装

    1、删除mariadb数据库

    yum remove mariadb-libs.x86_64

    CentOS7默认安装mariadb数据库,所以要先删除

    2、下载mysql源


    进入mysql下载网址:https://dev.mysql.com/downloads/repo/yum/

    进入tmp目录,在wget指令后粘贴下载链接,空格开始下载

    cd /tmp/
    
    wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

    3、安装源

    yum localinstall mysql57-community-release-el7-8.noarch.rpm

    查询一下源是否安装成功

    yum search mysql

    可以看到 已经安装成功

    执行安装指令

    yum install mysql-community-server

    查看mysql服务是否启动

    ps -ef | grep mysql

    重启mysql服务

    service mysqld restart

    停止和开启mysql服务

    service mysqld stop
    service mysqld start

    4、修改密码

    查看默认密码

    cat /var/log/mysqld.log | grep password

    复制默认密码登录mysql

    登录后mysql会提示你使用默认密码是不安全的,需要修改密码

    注意:不同版本的mysql修改密码的语法可能有差异,这里我用的是mysql8.0。

    SET PASSWORD = '12345';

    还是会有问题,提示密码不符合当前策略要求(应该就是过于简单),所以需要修改mysql的策略

    mysql5.7版本及以下

    set validate_password_policy=0;
    set validate_password_length=6;

    msyql8.0版本

    set global validate_password.policy=0
    set global validate_password.length=6

    如果你只想某个用户使用简单的密码策略,则可以把密码策略安全级别设置为最低,创建用户后再恢复过来。

    2、基本操作

     1.、远程连接 

     设想一种情况,你想在windows主机中连接云服务器或是链接另外一台主机上的数据库。

    当你打开数据库管理工具(我用的是sqlyog),输出远程IP和数据库账号密码,连接时,将会报错,提示不能连接,因为数据库没有开启远程连接。

    那如何开启呢?

    1、进入远程数据库

    2、修改权限信息

    show databases;
    use mysql;
    show tables;
    select Host,User from user G;
    update user set Host
    ="%" where Host="localhost" and User="root";
    select Host,User from user G;

    3、刷新权限信息或重启服务

    将root账号的登录IP修改成任意IP都可登录后,还是不能通过远程连接,因为此时权限还未更新,需要刷新权限。

    可以通过刷新权限语句或重启服务来实现。

    刷新权限语句:

    flush privileges;

    重启服务:

    service mysqld restart

    4、关闭防火墙

    当做完上述操作后,还是不能进行远程连接,因为防火墙是开启的。防火墙开启时会将许多端口屏蔽掉,讲防火墙关闭即可。

    查看防火墙是否开启:

    ps -ef | grep firewalld

    关闭防火墙:

    service firewalld stop

     5、还是出现错误

    如果出现client does not support authentication protocol requested by server;的错误

     出现上述问题的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 把mysql用户登录密码加密规则还原成mysql_native_password

    解决办法:

    use mysql
    set global validate_password.policy=0
    set global validate_password.length=6;
    alter user 'root'@'%' identified with mysql_native_password by 'lhb912168';

    最后一行'用户名'@'%'和'用户名'@'localhost'的区别,一个是任意连接,一个是本地连接。lhb912168是我的root账号密码,这也同样适用于其它用户。

    2、开启genelog

    为什么要开启genelog?

    genelog会记录所有操作数据库的sql语句

    步骤:

    进入数据库

    设置geneLog日志文件存放路径

    set global general_log_file="/tmp/general.log";

    开启genelog

    set global general_log=on;

    3、用户管理

    创建用户:

    set global validate_password.policy=0
    set global validate_password.length=6;

    create user 'user'@'%' identified by '123456';

    赋予用户所有权限:

    grant all privileges on *.* to 'user'@'%' identified  by '123456' with grant option;

    *.* 表示所有库的所有表。‘user'@'%'表示所有主机登录的user账号。

    赋予单独权限:

    grant select,insert,update,delete on *.* to 'user'@'%' identified  by '123456' with grant option;

    回收权限:

    revoke all privileges on *.*  from user;

    刷新权限语句:

    每次进行权限修改操作,需要刷新权限

    flush privileges;

    4、忘记root密码

    1)跳过权限表的验证

    vim /etc/my.cnf

     在配置文件的最后一行加上skip-grant-tables

    这是登录mysql就可以不用输入密码了。

    2)修改密码

    现在不能使用安装mysql后修改默认root密码方法来更新密码,需要修改权限表

    update user set authentication_string="12345" where user = 'root';

    flush privileges;

     3)复原权限表

    将my.cnf中在最后一行添加的语句删除。

  • 相关阅读:
    【串线篇】Mybatis缓存原理
    【串线篇】Mybatis之动态sql
    【串线篇】Mybatis之模糊查询
    【串线篇】sql映射文件-分布查询(上)association 1-1
    【串线篇】SQL映射文件-联合查询(完结association+cellection)
    【串线篇】加谈数据库之连接join
    【串线篇】数据库设计之加谈n-n
    【串线篇】SQL映射文件-resultMap自定义封装
    【串线篇】sql注入问题
    【串线篇】SQL映射文件select简单查询标签
  • 原文地址:https://www.cnblogs.com/jsyllhb/p/10549598.html
Copyright © 2011-2022 走看看