`

Linux下Mysql源码安装

阅读更多
1.假设已经有mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz

(1)创建mysql的安装目录及数据库存放目录      
解压缩下载的源码包,目录结构,特殊指定的目录除外:
           ./bin                               #mysql用户可执行文件目录
           ./include/mysql           #mysql C头文件目录
           ./info                              #mysql 信息文件目录
           ./lib/mysql                    #mysql库文件目录
           ./libexec                        #mysql后台daemon程序目录
           ./man                             #mysql联机帮助文档目录
           ./mysql-test                  #mysql测试程序目录
           ./share/mysql              #mysql公用文件目录,包括字符集、配置文件模板、启动脚本、初始化SQL文件等
           ./sql-bench                   #mysql压力测试程序目录
           /etc/my.cnf                    #mysql配置文件
           /etc/rc.d/init.d/mysqld #mysqld服务启动脚本

将下载的源码包移至工作目录:(即源码安装)
[root@localdomain~]#mv  mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz  /usr/local/
进入工作目录并用tar命令解压源码包:
[root@localdomain~]#cd  /usr/local/
[root@localdomain~]#tar zxvf  mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
重命名mysql-5.6.23-linux-glibc2.5-x86_64为mysql
[root@localdomain~]#mv mysql-5.6.23-linux-glibc2.5-x86_64 mysql
命令执行结束后,当前工作目录下将生成一个新的子目录mysql-5.6.23-linux-glibc2.5-x86_64/,此目录下即为mysql的源码文件。
目录说明:
/usr/local/mysql        //安装目录
/usr/local/mysql/data         //数据库存放目录

(2)创建mysql用户及用户组

[root@localdomain~]groupadd mysql
[root@localdomain~]useradd -r -g mysql mysql
#groupadd mysql
#增加一个名为 mysql的用户。

-g:指定新用户所属的用户组(group)

2.配置

(1)设置目录权限

[root@localdomain~]# cd /usr/local/mysql
[root@localdomain mysql]# chown -R root:mysql . //把当前目录中所有文件的所有者所有者设为root,所属组为mysql
[root@localdomain mysql]# chown -R mysql:mysql data
(2)
[root@localdomain mysql]# cp my.cnf /etc/my.cnf //将mysql的启动服务添加到系统服务中

(3)创建系统数据库的表

[root@localdomain mysql]# cd /usr/local/mysql
[root@localdomain mysql]#  ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
(4)设置环境变量

[root@localdomain~]# vi /root/.bash_profile

在PATH=$PATH:$HOME/bin添加参数为:

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

[root@localdomain~]#source /root/.bash_profile


(5)手动启动mysql

[root@localdomain~]# cd /usr/local/mysql

[root@localdomain mysql]# ./bin/mysqld_safe --user=mysql &   //启动MySQL,但不能停止

启动日志写在此文件下:/usr/local/mysql/data/localhost.err

关闭MySQL服务

[root@localdomain mysql]# mysqladmin -u root -p shutdown  //这里MySQL的root用户还没有配置密码,所以为空值。需要输入密码时,直接点回车键即可。

复制代码

(6)另一种简单的启动mysql的方法(mysql已经被添加到系统服务中)

[root@localdomain~]# service mysql.server start 
[root@localdomain~]# service mysql.server stop
[root@localdomain~]# service mysql.server restart

如果上述命令出现:mysql.server 未识别的服务

则可能mysql还没添加到系统服务中,下面用另一种方法添加:

[root@localdomain mysql]# cp support-files/mysql.server  /etc/init.d/mysql //将mysql的启动服务添加到系统服务中

注意:主要是将mysql.server拷贝到/etc/init.d中,命名为mysql。在有的系统中,mysql.server在/usr/local/mysql/share/mysql/mysql.server中,而本系统中,mysql.server在/usr/local/mysql/support-files/mysql.server中。

然后再用#service mysql start 来启动mysql即可。


(7)修改MySQL的root用户的密码以及打开远程连接
复制代码

[root@localdomain~]# mysql -u root mysql

mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";  //为root添加远程连接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password  from user where User='root';
mysql>flush privileges;
mysql>exit

重新登录:mysql -u root -p

若还不能进行远程连接,则关闭防火墙
[root@localdomain~]# /etc/rc.d/init.d/iptables stop

复制代码

注:如果不能远程连接,出现错误mysql error number 1130,则加入下面语句试试:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;

3.问题汇总:
(1)FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db
解决方法:[root@localdomain mysql]#yum install -y perl-Module-Install.noarch
(2)启动如果报错,应该是MariaDB启动的时候要默认创建一些日志文件,或者运行相关的文件,但是没有创建,或者指定的目录不存在
通常是因为:
一. 在 /var/log/mariadb/ 里创建 mariadb.log 文件没有权限
二. 在 /var/run/mariadb 里创建 mariadb.pid 也没有权限
chown mysql -R /var/run/mariadb #所有权给mysql用户,否则不能创建/var/run/mariadb/mariadb.pid文件
(3)ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
此错误是因为socket位置导致, 加个软链, 当然修改/etc/my.cnf的sock位置也可以
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
(4)/usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'

在my.conf文件中的:datadir 下面加入如下内容:skip-grant-tables
重启mysql服务,用命令mysql -uroot 进入数据库,用命令:show databases;查看是否有mysql数据库
如有名字为mysql的数据库,则用命令:update mysql.user set password=PASSWORD("密码") where user='root'; 修改密码
用命令:flush privilege 更新权限表; 退出后 去掉my.ini里添加的:skip-grant-tables内容 重启mysql服务后用
命令:mysql -uroot -p 回车输入密码后正常进入数据库。。  可用grant 命令新建用户。
[mysqld]
port=3306
datadir=/var/lib/mysql
skip-grant-tables
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
user=mysql
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
4.设置mysql帐号
mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。
以root帐号连接到mysql服务器:
mysql -u root
如果提示找不到mysql文件,请尝试使用绝对路径,如本文示例为:
/usr/local/mysql/bin/mysql -u root
命令成功执行后将进入到mysql命令提示符下:
mysql>
(以下命令均在mysql命令提示符下执行)
改变当前数据库为mysql:
use mysql
设置从本地主机登录的root帐号密码:
set password for root@localhost=password('your password');
或:
update user set password=password('your password') where user='root' and host='localhost';
删除匿名帐号:
delete from user where user='' ;
删除密码为空的帐号:
delete from user where password='';
删除允许非localhost主机登录的帐号:
delete from user where host<>'localhost' ;
执行下面的命令使更改生效:
flush privileges ;
执行下面的命令退出mysql命令行:
quit
或:
/q

5.问题集锦:
(1)either host 'localhost.localdomain' nor 'localhost' could be looked up with

/usr/bin/resolveip

Please configure the 'hostname' command to return a correct hostname.
错误:

解决办法

开始初始化数据库
[root@mysql media]# cd /usr/local/mysql/scripts/
[root@mysql scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data/
WARNING: The host 'mysql' could not be looked up with /usr/local/mysql/bin/resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables.../usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[root@mysql scripts]# yum install -y libaio
[root@mysql scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data/

在/etc/hosts配置文件中增加IP地址和主机名的映射



[root@localdomain Packages]# cat /etc/hosts

127.0.0.1 localhost localdomain localhost4 localhost4.localdomain4

::1 localhost localdomainlocalhost6 localhost6.localdomain6

IP地址 localdomain

(2).Starting MySQL..The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid
问题描述: [root@bogon mysql-5.1.41]# /etc/rc.d/init.d/mysqld startStarting MySQL.Manager of pid-file quit without updating file.[失败] --------------------------- 解决办法:配置的时候有一个步骤是 cp support-files/my-medium.cnf /etc/my.cnf ; 就编辑my.cnf,在[mysqld]下面加上:datadir = /usr/local/mysql/data 例如# The MySQL server[mysqld]port            = 3306socket          = /tmp/mysql.sockskip-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_s ...

(3).ERROR 2003 (HY000): Can't connect to MySQL server
一.问题的提出


/usr/local/webserver/mysql/bin/mysql -u root -h 172.29.141.112  -p -S /tmp/mysql.sock
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '172.29.141.112' (113)


二.问题的分析



出现上述问题,可能有以下几种可能

1. my.cnf 配置文件中 skip-networking 被配置

skip-networking 这个参数,导致所有TCP/IP端口没有被监听,也就是说出了本机,其他客户端都无法用网络连接到本mysql服务器

所以需要把这个参数注释掉。



2.my.cnf配置文件中 bindaddress 的参数配置

bindaddress,有的是bind-address  ,这个参数是指定哪些ip地址被配置,使得mysql服务器只回应哪些ip地址的请求,所以需要把这个参数注释掉。



3.防火墙的原因

通过 /etc/init.d/iptables  stop  关闭防火墙

我的问题,就是因为这个原因引起的。关闭mysql 服务器的防火墙就可以使用了。



三.问题的解决

1.  如果是上述第一个原因,那么 找到 my.cnf  ,注释掉 skip-networking 这个参数

sed -i  's%skip-networking%#skip-networking%g'  my.cnf



2. 如果是上述第二个原因,那么  找到 my.cnf  ,注释掉 bind-address  这个参数

sed -i  's%bind-address%#bind-address%g'    my.cnf

sed -i  's%bindaddress%#bindaddress%g'      my.cnf



最好修改完查看一下,这个参数。



3.如果是上述第三个原因,那么 把防火墙关闭,或者进行相应配置



/etc/init.d/iptables stop
分享到:
评论

相关推荐

    linux下MySQL源码安装和简单使用.docx

    ### Linux下MySQL源码安装与简单使用 #### 源码安装原因 在某些Linux发行版中,并不自带MySQL数据库,或因特定硬件架构(例如国产龙芯等基于MIPS指令集的处理器)而不支持MySQL官方提供的RPM包安装方式。这种情况...

    linux下mysql源码编译安装

    linux下源码编译安装mysql-5.6.25版本

    linux下MySQL源码安装和简单使用.pdf

    在Linux环境下,MySQL数据库系统可能不预装在某些操作系统中,或者对于特定的硬件架构(如MIPS指令系统的国产龙芯电脑),官方提供的RPM包可能无法直接安装。在这种情况下,通过源码编译安装MySQL成为必要的选择。...

    LINUX下MYSQL源码安装和简单使用.pdf

    - CMake是构建MySQL源码所需的工具,可以从官方网站下载Unix/Linux源码版本,解压缩后运行`./configure --prefix=/usr/local/cmake`,`gmake && make install`进行安装。 5. **配置MySQL源码**: - 进入MySQL源码...

    Linux下以源代码方式安装MySQL教程

    在Linux环境下,以源代码方式安装MySQL是一种常见且灵活的方法,尤其对于自定义配置和调试需求较高时。本文将详细讲解这一过程,适用于熟悉Linux基础操作的用户。 首先,安装MySQL需要一个C编译器,这里推荐使用GCC...

    linux下源码安装mysql数据库

    ### Linux下源码安装MySQL数据库知识点详解 #### 一、准备工作与环境搭建 在Linux环境下进行MySQL数据库的源码安装前,需要准备一系列的基础工作,包括但不限于创建必要的目录结构、设置用户权限以及安装所需的...

    linux下mysql5.7.11源码安装

    ### Linux 下 MySQL 5.7.11 源码安装详细步骤与解析 #### 一、环境准备 1. **检查已安装的 MySQL 版本**:在开始之前,确保环境中没有已安装的 MySQL 服务。使用 `rpm -qa | grep mysql` 命令查看是否有 MySQL 的...

    linux环境下MySQL源码编译安装

    linux环境下MySQL源码编译安装及初始化,使用cmake安装,如何添加配置文件,配置客户端,以及初始化。

    Mysql源码包安装步骤

    MySQL源码包安装步骤是一个复杂的过程,涉及到许多技术细节,对于想要深入了解数据库系统或进行定制化配置的IT专业人员尤其重要。以下将详细介绍这个过程。 首先,安装MySQL源码包前,确保你的操作系统环境满足...

    linux 下mysql5.5安装配置大全

    在Linux环境下安装配置MySQL 5.5是一个涉及多个步骤的复杂过程,本文将详细阐述这一过程,包括必要的准备工作、具体步骤以及可能遇到的问题及其解决办法。 #### 一、安装CMake 在安装MySQL 5.5前,首先需要安装...

    linux系统下源码版mysql安装

    本文将详细介绍如何在Linux系统下不借助cmake进行MySQL源码安装的具体步骤及其相关知识点。 #### 准备工作 在开始安装前,请确保您的Linux系统已经安装了必要的编译工具和库文件。例如GCC、make等基础开发工具,...

    mysql-5.7.18源码和connector C++源码在Linux在编译安装

    在Linux环境下,构建和安装MySQL 5.7.18的源码以及Connector/C++ 1.1.8是一项技术性较强的任务。首先,我们需要理解MySQL数据库系统的基础,它是世界上最流行的开源关系型数据库管理系统,而Connector/C++是MySQL...

    linux下mysql安装包

    在Linux环境下安装MySQL数据库系统,通常有两种方法:使用软件包管理器(如apt-get或yum)或者通过源代码编译安装。本篇将详细介绍在Linux下通过编译安装MySQL 5.6.29的过程,这给用户提供了更多的自定义选项,以便...

    linux下mysql5.5编译安装笔记(完整安装教程)

    现在,可以下载MySQL 5.5.11的源代码包,解压后进入目录: ``` wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.11.tar.gz tar zxvf mysql-5.5.11.tar.gz cd mysql-5.5.11 ``` 使用CMake配置编译选项,...

    在Linux下安装Mysql(非root)

    在 Linux 操作系统中安装 Mysql 数据库可以通过多种方式实现,包括使用源代码编译安装和二进制安装。对于非 Root 用户来说,安装 Mysql 可能会遇到一些权限问题,但是通过正确的配置和权限设置,可以成功安装和运行 ...

    基于Linux下MYSQL的安装流程

    4. **编译MySQL源代码**: ```bash [root@localhost mysql-5.0.22]# make ``` 编译过程可能需要一段时间,请耐心等待。 5. **安装MySQL**: ```bash [root@localhost mysql-5.0.22]# make install [root@...

    mysql-5.5.27 linux源码安装文件

    本文将详细介绍如何在Linux环境下,通过源代码方式安装MySQL 5.5.27版本。 源码安装MySQL的优点在于,你可以完全控制编译过程,根据系统的特定需求定制配置,例如选择特定的编译选项、优化参数或添加额外的模块。...

    mysql suse linux安装文档)

    1. 将MySQL的源代码包`mysql-standard-4.0.24-pc-linux-gnu-i686.tar.gz`复制到一个合适的目录。 2. 使用`tar`命令解压缩文件,生成一个名为`mysql-standard-4.0.24-pc-linux-gnu-i686`的目录。 3. 为了便于管理和...

Global site tag (gtag.js) - Google Analytics