zoukankan      html  css  js  c++  java
  • 青蛙学Linux—MySQL安装和初始化

    1、安装MySQL

    这里我们选择MySQL的源码包进行安装,MySQL版本5.7,安装路径为/usr/local/mysql,数据存储路径为/db/mysql,日志文件路径/usr/local/mysql/logs,运行MySQL的用户和组为mysql。

    1.1、创建mysql用户

    mysql用户用于运行MySQL,不能使用shell,为虚拟用户:

    [root@localhost apps]# useradd -s /sbin/nologin mysql

    创建数据存储目录并授权给mysql用户:

    [root@localhost apps]# mkdir -p /db/mysql
    [root@localhost apps]# chown -R mysql:mysql /db/mysql

    1.2、下载MySQL

    MySQL的源码包可以在MySQL的官网https://www.mysql.com下载。这里下载MySQL的开源社区版MySQL Community Edition。

    MySQL Community Edition有几种产品,这里我们下载MySQL Community Server。在进入下载页面后做如下选择:

    1

    然后在过滤出的产品中下载带有Boost库的版本。因为从MySQL 5.7版本开始,安装MySQL必须有Boost库。

    1.3、安装依赖环境

    MySQL的编译安装依赖以下软件包,这里通过YUM安装这些软件包:

    [root@localhost apps]# yum install make gcc-c++ cmake bison-devel ncurses-devel bison perl perl-devel

    1.4、安装MySQL

    从MySQL 5.5版本开始,使用cmake替代configure进行编译。进入解压后的MySQL源码目录,运行:

    [root@localhost mysql-5.7.25]# cmake 
    > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql   # MySQL安装路径
    > -DMYSQL_DATADIR=/db/mysql                 # 数据库存储目录
    > -DDEFAULT_CHARSET=all                     # 扩展字符集支持
    > -DDEFAULT_CHARSET=utf8                    # 定义字符集设置
    > -DDEFAULT_COLLATION=utf8_general_ci       # 字符集排序规则
    > -DWITH_INNOBASE_STORAGE_ENGINE=1          # 启用InnoDB引擎
    > -DWITH_MYISAM_STORAGE_ENGINE=1            # 启用MyISAM引擎
    > -DMYSQL_USER=mysql                        # 运行MySQL的用户
    > -DMYSQL_TCP_PORT=3306                     # MySQL端口
    > -DWITH_BOOST=boost                        # boost库路径
    > -DENABLED_LOCAL_INFILE=1                  # 启用加载本地数据
    > -DWITH_PARTITION_STORAGE_ENGINE=1         # 启用Partition分区
    > -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock        # MySQL的socket文件
    > -DWITH_EMBEDDED_SERVER=1                  # 开启嵌入式服务器
    > -DWITH_SYSTEMD=1                           # 启用systemd支持

    cmake执行完成无报错后,运行:

    [root@localhost mysql-5.7.25]# make && make install

    2、初始化和启动MySQL

    2.1、初始化MySQL

    MySQL的运行需要一个系统库,初始化MySQL的操作就是生成这个系统库。在MySQL 5.7之前的版本,初始化操作是通过MySQL源码目录下的scripts目录中名为mysql_install_db的初始化脚本进行的;而从MySQL 5.7版本开始,mysql_install_db脚本已经被废弃,需要使用以下命令进行初始化:

    ./mysqld --initialize-insecure|--initialize --user=运行MySQL的用户 --basedir=MySQL安装目录 --datadir=数据库存储目录
    • --initialize-insecure:在初始化时不生成管理员root用户的密码
    • --initialize:在初始化时生成一个随机的管理员root用户密码,密码将打印在屏幕上

    2.2、检查MySQL配置文件

    MySQL的配置文件名为my.cnf。MySQL在启动时会首先在/etc目录下查找my.cnf文件,如果找不到则会在$basedir(MySQL安装目录)目录下查找,如果还找不到则会在用户的家目录下查找my.cnf文件。

    在启动MySQL之前,必须先确认是否已经存在/etc/my.cnf文件,如果存在则首先删除/etc/my.cnf,然后重新建立这个文件。否则MySQL读取老的/etc/my.cnf可能会造成启动失败。

    基础的my.cnf文件非常简单,只需设置如下内容:

    [mysqld]
    datadir=/db/mysql                           # MySQL的数据存储路径
    socket=/tmp/mysqld.sock                     # MySQL的socket文件
    symbolic-links=0                            # 关闭表内符号链接支持
    log-error=/usr/local/mysql/logs/mysqld.log  # MySQL日志文件

    创建MySQL日志目录并授权给mysql用户:

    [root@localhost mysql]# pwd
    /usr/local/mysql
    [root@localhost mysql]# mkdir logs
    [root@localhost mysql]# chown -R  mysql:mysql logs

    2.3、MySQL服务管理脚本

    MySQL在编译安装的过程中会生成用于对MySQL服务进行管理的脚本,以使用户可以使用操作系统的服务管理命令对MySQL的服务进行管理。

    init

    在使用init机制的Linux系统上,MySQL的服务管理脚本位于以下目录:

    MySQL安装目录/support-files/

    文件名为mysql.server,只需将该文件拷贝到/etc/init.d目录下并重命名为mysqld,然后授予775的权限即可。之后就可以使用init的管理命令对MySQL服务进行管理了。

    systemd

    在cmake编译时使用参数-DWITH_SYSTEMD=1可生成名为mysqld.service的MySQL的Unit配置,该文件位于以下目录:

    MySQL安装目录/usr/lib/systemd/system/

    将该文件拷贝到/usr/lib/systemd/system下即可使用systemd来管理MySQL服务。

    注意:在mysqld.service中定义了MySQL的PID文件mysqld.pid的路径,位于:

    /var/run/mysqld

    所以在启动MySQL之前必须先创建该目录,并授权给mysql用户。

    3、首次登录MySQL

    在进行完以上的初始化配置之后,就可以启动MySQL了。MySQL的管理员用户为root,首次登录MySQL需要使用该用户。

    进入MySQL安装目录下的bin目录,运行:

    [root@localhost bin]# ./mysql -u root -p

    提示输入密码。如果在初始化时没有生成随机密码,则直接回车即可登录MySQL;如果初始化时生成了随机密码,MySQL会将随机密码打印在屏幕上,输入随机密码即可登录MySQL。

    对于root空密码,为了安全建议为root设置密码;而使用随机密码,则必须更改密码,否则不论执行任何命令,总会显示以下信息:

    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    使用以下三条命令重置root用户的密码:

    set password=password('new password');                # 设置新密码
    alter user 'root'@'localhost' password expire never;  # 设置密码过期时间
    flush privileges;                                     # 刷新MySQL,使更改马上生效

    接下去就可以使用新密码登录MySQL了。

  • 相关阅读:
    栈和队列
    链表
    map
    二叉平衡树旋转
    二叉排序树详情
    红黑树详情
    查并集
    动态规划
    位操作
    字典树
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10323365.html
Copyright © 2011-2022 走看看