zoukankan      html  css  js  c++  java
  • Centos7.2下安装mysql5.7,使用rpm包安装

    环境:

          CentOS Linux release 7.2.1511 (Core)

          mysql-5.7.18

    1 安装前需要先卸载mariadb-lib

    [root@slave5 ~]#  rpm -qa|grep mariadb
     mariadb-libs-5.5.44-2.el7.centos.x86_64 
    [root@slave5 ~]#  rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps

    2 到官网去下载最新的rpm包:mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar

    解压出rpm-bundle.tar,实际上只需要安装以下几个包

    [root@slave5 ~]#  rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
    [root@slave5 ~]#  rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
    [root@slave5 ~]#  rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 
    [root@slave5 ~]#  rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

    上面几个包有依赖关系,执行有先后。

    使用rpm安装方式安装mysql,安装的路径如下:

    a 数据库目录
    /var/lib/mysql/
    b 配置文件
    /usr/share/mysql(mysql.server命令及配置文件)
    c 相关命令
    /usr/bin(mysqladmin mysqldump等命令)
    d 启动脚本
    /etc/rc.d/init.d/(启动脚本文件mysql的目录)

    e 数据库my.cnf

    /etc/my.cnf

    3 数据库初始化

    为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化

    [root@slave5 ~]#  mysqld --initialize --user=mysql

    如果是以 mysql 身份运行,则可以去掉 --user 选项

    另外 --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,

    而使用 --initialize-insecure 命令则不使用安全模式,则不会为 root 用户生成一个密码。

    这里演示使用的 --initialize 初始化的,会生成一个 root 账户密码,密码在log文件里,红色区域的就是自动生成的密码

    [root@slave5 ~]# cat /var/log/mysqld.log 
    2017-04-13T10:00:36.294549Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2017-04-13T10:00:36.848923Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2017-04-13T10:00:36.961351Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2017-04-13T10:00:37.153654Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0ae74223-2030-11e7-abde-08002774d86f.
    2017-04-13T10:00:37.185725Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2017-04-13T10:00:37.229524Z 1 [Note] A temporary password is generated for root@localhost: %kWTz,Ml?3Zs

     现在启动mysql数据库systemctl start mysqld.service

    [root@slave5 ~]# systemctl start mysqld.service

    可以使用下面两个命令对mysql进行停止,启动和重启:

    启动:

    使用 service 启动:service mysqld start
    使用 mysqld 脚本启动:/etc/inint.d/mysqld start
    使用 safe_mysqld 启动:safe_mysqld&

    停止:

    使用 service 启动:service mysqld stop
    使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
    mysqladmin shutdown 

    重启:

    使用 service 启动:service mysqld restart
    使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

    4 连接数据库

    [root@slave5 ~]# mysql -u root -p
    Enter password:

    密码输入:%kWTz,Ml?3Zs

    修改密码:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

     由于我的linux centos7装在了虚拟机上,所以需要使用宿主机远程访问mysql,连接Mysql出现1045错误。

    解决方法:

    mysql> use mysql; 
    mysql> select host,user from user;

     +-----------+------+ | host         |  user       |

    
    

     +-----------+------+ | localhost    |  root       |

    从执行结果中可以看出,root用户仅允许本地(localhost)登陆

    如果要远程登陆该Mysql服务器的话,就需要新建一个普通权限的用户,新建用户使用如下命令:

    mysql> grant select,update,insert,delete on mas.* to yucong@localhost identified by "123456"; 

    这句命令的意思是:

    新建用户yucong,并且只允许该用户在本地(localhost)登录,密码是123456,并且赋予它对mas库中所有表select,update,insert的权限。

    我们在这有一个mas库,所以用mas.*代表mas库下的所有表。

    现在该yucong用户,已经可以登录mysql了,但是也还是只能本地登录。

    若要yucong用户可以远程登录mysql,则还需要如下命令:

    mysql> update user set host = '%' where user = 'yucong';

    现在我们再查看mysql的管理库:

    mysql> select host,user from user;

    +-----------+------+ | host         |  user       |

    +-----------+------+ | %            |  yucong   | 

    +-----------+------+ | localhost |  root        |

    这时,在MySQL客户端工具上新建连接,输入连接名,远端的Linux的IP地址,输入用户名yucong和密码123456,选择连接端口,mysql默认的是3306,还是连接不上。

    经过多番查找,发现还需要执行

    mysql> flush privileges;

    把缓存flush后,终于大功告成了。 因为使用update语句修改用户记录,还需要FLUSH语句告诉服务器重载授权表。

    当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。

    所以更简便的方法是

    mysql>GRANT SELECT,UPDATE,INSERT,DELETE ON mas.* TO yucong@'%' IDENTIFIED BY '123456';

      

    5 数据库表大小写不敏感设置

    mysql大小写敏感配置相关的两个参数,lower_case_file_systemlower_case_table_names

    查看当前mysql的大小写敏感配置:show global variables like '%lower_case%';

    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | lower_case_file_system | ON    |
    | lower_case_table_names | 0     |
    +------------------------+-------+

    lower_case_file_system

    表示当前系统文件是否大小写敏感,只读参数,无法修改。

    ON  大小写不敏感
    OFF 大小写敏感
     

    lower_case_table_names

    表示表名是否大小写敏感,可以修改。

    lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
    lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作
     

    设置lower_case_table_names的值

    打开my.cnf文件(vim  /etc/my.cnf),加入以下语句后重启(service mysqld restart)。

    lower_case_table_names = 1

    6 数据库中文乱码

    用SHOW VARIABLES LIKE 'character%'查看当前字符集:

    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | utf8 |
    | character_set_connection | utf8 |
    | character_set_database | lutf8 |
    | character_set_filesystem | binary |
    | character_set_results | utf8 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

    character_set_server的默认字符集还是latin1,需要将其修改为utf-8。

    解决方式:

    在[mysqld]字段里加入character-set-server=utf8

    重启mysql服务:service mysqld restart,再次使用SHOW VARIABLES LIKE 'character%'查看

    结束语:如果你自己手把手在云服务器上搭建一个Mysql服务器,这些问题你都会遇到的,甚至更多,尝试着去搭建一次,才会体会到有哪些问题。 

     如需转载,请声明来源:https://www.cnblogs.com/yucongblog/p/6705629.html

    业务需求变更永无休止,技术前进就永无止境!
  • 相关阅读:
    利用VS的预生成事件获取SVN版本作为项目内部版本号
    静态构造函数到底执行了多少次?
    C#之自定义的implicit和explicit转换
    FineUI之使用SQL脚本从数据库表中生成相应的输入控件
    文件操作
    PHP中文件类型 文件属性 路径以及 文件相关的函数
    MySqli 中预处理类 stmt
    MySql 事务处理
    MySqli 执行多条SQL语句
    PHP与MySqli
  • 原文地址:https://www.cnblogs.com/yucongblog/p/6705629.html
Copyright © 2011-2022 走看看