青蛙学Linux—MySQL安装和初始化

摘要:
由于MySQL 5.7启动,您必须拥有Boost库才能安装MySQL。否则,MySQL读取旧的/etc/my Cnf可能会导致启动失败。init在使用init机制的Linux系统上,MySQL服务管理脚本位于以下目录中:MySQL安装目录/support files/文件名为MySQL.server。只需将文件复制到/etc/initD目录并将其重命名为mysqld,然后授予775权限。MySQL的管理员用户是root用户,首次登录MySQL需要root用户。

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了。

免责声明:文章转载自《青蛙学Linux—MySQL安装和初始化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序开发——点击按钮退出小程序的实现oracle 字符集下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux如何进行GPIO读写操作的?

摘要:本文介绍GPIO的读写,介绍基本原理,以及不同读写方式的性能。 本文分享自华为云社区《Linux 基于sysfs的GPIO读写操作》,作者:一颗小树x 。 前言 最近接触到Linux系统中的GPIO开发,这里做个小总结,也分享一下;本文会介绍GPIO的读写,介绍基本原理,以及不同读写方式的性能。 一、GPIO sysfs interface 基本原...

pgpool-II主备流复制的架设

1.环境 OS: CentOS release 6.4 (Final) DB: postgresql 9.3.6 pgpool服务器: pgpool 172.16.0.240 数据库主服务器:master 172.16.0.241 数据库从服务器:slave 172.16.0.242  其中主从数据库使用的流复制,并且已经配置完毕,新配置的pgpool...

Java Selenium3 WebDriver启动火狐、Chrome、IE,Edge浏览器的方法(一)

selenium3和selenium2没有太大的区别,就是精简了一些不用的东西,对浏览器的支持更好了,比如对高版本的浏览器(FireFox,Chrome,Edge等)可以完美的支持,不用受限于版本的问题 下面总结一下启动常用浏览器的方法 前提 安装好java的环境配置 新建一个maven工程 在maven的pom文件加入selenium的依赖包(版本可根...

【Linux】ODBC安装

ODBC介绍   ODBC是Open Database Connect 即开发数据库互连的简称,它是一个用于访问数据库的统一界面标准。ODBC引入一个公共接口以解决不同数据库潜在的不一致性,从而很好的保证了基于数据库系统的应用程序的相对独立性。   很多程序员都已经体会到了在Windows平台下通过ODBC进行数据库编程开发的益处,其实在Linux/Uni...

第二次写linux驱动总结

  第一次写驱动是在去年,2019年十月份左右。当时是看着韦老师的视频一步步完成的。其中经历了很多error.搭建环境花费了很多精力。时间来到了2020年2月19日星期三,韦老师新视频出来了,我跟着再来了一次学习,使用开发板是100ask_6ull,依然是从搭建环境开始,不过感觉没有说明进步,该经历的坎坷,一样也没有少。特别是shinrk,压缩虚拟机ubu...

浅析vue混入(mixin)

  vue中的混入,可以在一定程度上提高代码的复用性。通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”。但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同的配置项中,有着不同的混入策略,下面会一一进行介绍vue不同配置项的混入策略。vue混入的基本流程如图所示,混入属性的合并是发生在组件的生命周期钩子调用之...