• 02: MySQL的安装与基本配置


    目录

    1. MySQL安装与基本配置(centos 7.3)
    2. 修改 MySQL默认字符集和引擎
    3. MySQL创建用户与授权

    一,MySQL安装与基本配置(centos 7.3)

    安装参考网址:https://www.cnblogs.com/jorzy/p/8455519.html

    • 1. 查看系统中是否已安装 MySQL 服务:以下提供两种方式

    rpm -qa | grep mysql
    
    yum list installed | grep mysql
    
    • 2、如果已安装则删除 MySQL 及其依赖的包

    yum -y remove mysql-libs.x86_64
    
    • 3、下载 mysql57-community-release-el7-8.noarch.rpm 的 YUM 源

    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
    
    • 4、安装 mysql57-community-release-el7-8.noarch.rpm

    pm -ivh mysql57-community-release-el7-8.noarch.rpm     
    
    安装完后,得到如下两个包:
    
    mysql-community.repo
    mysql-community-source.repo
    
    • 5、安装 MySQL,出现提示的话,一路 Y 到底

    yum install mysql-server 
    
    • 6、安装mysql所需的库和包含文件

    yum -y install mysql-devel 
    
    • 7、获取mysql初始密码

    service mysqld start
    grep "password" /var/log/mysqld.log
    
    • 8、mysql管理常用命令

    systemctl status mysqld
    systemctl start mysqld
    systemctl stop mysqld
    
    • 9、开机启动

    systemctl enable mysqld
    systemctl daemon-reload
    
    • 10、Mysql安装成功后,默认的root用户密码为空,可以直接登录

    mysql -uroot -p
    mysqladmin -u root password "1"                 # 给root用户配置密码:1
    mysql -uroot -p1                                # 配置完密码后必须使用密码登录
    

    二, 修改MySQL默认字符集和引擎

    1. 安装完MySQL使用外键关联创建表失败,原因是默认引擎不对

    2. 向MySQL插入中文发现显示乱码,原因是默认字符集不对

    show variables like 'character%';                       #查看MySQL默认字符集
    

    3. 解决方法是修改MySQL配置文件 vim /etc/my.cnf

    vim /etc/my.cnf        #下面的内容都是自己添加的内容
    
    [mysqld]
    default-storage-engine=INNODB
    default_character_set=utf8
    character_set_server=utf8
    
    [mysqld_safe]
    default-character-set = utf8
    
    [client]
    default-character-set = utf8
     
    [mysql.server]
    default-character-set = utf8
     
    [mysql]
    default-character-set = utf8
    
    vim /etc/my.cnf
    

    4. 面试题:你的数据库用什么存储引擎?区别是

        1. 常见的有MyISAM和InnoDB。
        2. InnoDB:  支持外键约束,支持事务。对索引都是单独处理的,无需引用索引。
        3. MyISAM: 不支持外键约束,不支持事务,对数据大批量导入时,它会边插入数据边建索引。
               所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引
    

    三, MySQL创建用户与授权

    1、创建用户

        1. 命令 : CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    
            1、username: 你将创建的用户名
            2、host:   指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
            3、password:  该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
    
        2、例子
    
            1、CREATE USER 'tom'@'localhost' IDENTIFIED BY '123456';         #允许tom从localhost登录
            2、CREATE USER 'jack'@'1.1.1.100' IDENTIFIED BY '123456';          #允许jack从1.1.1.100主机登录
            3、CREATE USER 'fly'@'%' IDENTIFIED BY '123456';                         #允许fly从任意主机登录
    
            4、mysql -h 1.1.1.3 -P 3306 -u jack -p123456                           # jack从1.1.1.100登录MySQL
    
            5、update mysql.user set authentication_string=PASSWORD('Chnsys@2016') where user='opwf';             # 修改用户密码
    

    2、授权

        1. 命令 : GRANT privileges ON databasename.tablename TO 'username'@'host'
    
            1、privileges:     用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
            2、databasename:   数据库名
            3、tablename:   表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
    
        2.例子
    
            1、GRANT SELECT, INSERT ON testdb.student TO 'tom'@'%';           # 授权tom对testdb数据库有查询和插入权限
            2、GRANT ALL ON *.* TO 'jack'@'%';                                                # 授权jack对所有数据库、所有表所有权限
    

    3、查看权限

    1、show grants for 'tom'@'localhost';                           # 查看用户tom在主机1.1.1.100上的权限
    
    2、show grants for root;                                        # 查看root用户所有权限
    

    4、撤销权限

    1、REVOKE all ON *.* FROM 'tom'@'%';                             # 撤销tom对所有数据库、所有表、的所有权限
    
    mysql创建与授权常用操作
    # 1、创建用户
    create user 'mup'@'%' identified by 'mup_yiducloud';
    
    # 2、授予mup用户授予对mup数据库的操作权限
    GRANT ALL ON mup.* TO 'mup'@'%';
    flush privileges;
    select host,user from mysql.user;
    
    # 3、删除用户
    Delete FROM mysql.user Where User='mup' and Host=”localhost”; 
    Delete FROM mysql.user Where User='mup'; 
    
    # 4、修改root密码
    update mysql.user set authentication_string=password('mysqlRootPwd') where user='root' and Host = 'localhost';
    

    四,mysql常见报错

    *1、ERROR 1819 (HY000): Your password does not satisfy the current policy requirements *

    # mysql -u root -p  #登录
    # mysql>set global validate_password_policy=0; #密码强度设为最低等级
    # mysql>set global validate_password_length=4; #密码允许最小长度为4
    # mysql>flush privileges;                      #更新授权表,生效
    

    2、ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'bsp'

    参考地址:https://blog.csdn.net/slovyz/article/details/52182283

      1. 报错原因
    1. 其实应该可以说基本上都是因为my.cnf 文件里面有skip-name-resolve参数这个参数导致这不能解析hostname或其它方式的登录;
    2. 所以登录任何用户,匹配的时候不走root@'localhost',或者127.0.0.1或者::1而是 一个劲的走root@'%';
    
    
    • 2、解决方法
    #1、查看一下每种方式下的root用户是否有grant权限
    mysql> select Grant_priv from user where Host='127.0.0.1';
    +------------+
    | Grant_priv |
    +------------+
    | N          |
    +------------+
    row in set (0.00 sec)
    
    mysql> select Grant_priv from user where Host='localhost';
    +------------+
    | Grant_priv |
    +------------+
    | N          |
    +------------+
    row in set (0.01 sec)
    
    
    #2、在不重启MySQL服务的情况下,只需要在登录的时候加上-h参数
    (a). /usr/local/mysql/bin/mysql -uroot -p123456 -h localhost
    (b). /usr/local/mysql/bin/mysql -uroot -p123456 -h127.0.0.1
    
    #3、更改用户权限让其拥有grant权限
    mysql> update user set Grant_priv='Y' where Host='127.0.0.1';
    mysql> update user set Grant_priv='Y' where Host='localhost';
    mysql> flush privileges;
    
    #4、退出重新用root登录,然后再操作
    

    *3、ERROR 1045 (28000): Access denied for user 'opwf'@'localhost' (using password: YES) *

    参考地址:https://www.cnblogs.com/bk7788/p/6388562.html

      1. 报错原因
    1. 大意就是你有一个用户名为空的账户,mysql会先匹配它,然后就一直提示你密码错误,删掉这个匿名用户,然后执行 FLUSH PRIVILEGES;
    
    DELETE FROM mysql.user WHERE user='';
    
    FLUSH PRIVILEGES
    
  • 相关阅读:
    Activit 5.13 工作流部署新版本后回退到上一个版本
    一个java的http请求的封装工具类
    FastJSON使用例子
    SoapUI、Postman测试WebService
    PLSQL连接oracle数据库
    python函数修饰符@的使用
    QEMU KVM Libvirt手册(8): 半虚拟化设备virtio
    QEMU KVM Libvirt手册(7): 硬件虚拟化
    多个router和多个network
    nova file injection的原理和调试过程
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12168042.html
Copyright © 2020-2023  润新知