Linux下Mysql源码安装

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

(1)创建mysql的安装目录及数据库存放目录

解压缩下载的源码包,目录结构,特殊指定的目录除外:

./bin#mysql用户可执行文件目录

./include/mysql#mysqlC头文件目录

./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~]#mvmysql-5.6.23-linux-glibc2.5-x86_64.tar.gz/usr/local/

进入工作目录并用tar命令解压源码包:

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

[root@localdomain~]#tarzxvfmysql-5.6.23-linux-glibc2.5-x86_64.tar.gz

重命名mysql-5.6.23-linux-glibc2.5-x86_64为mysql

[root@localdomain~]#mvmysql-5.6.23-linux-glibc2.5-x86_64mysql

命令执行结束后,当前工作目录下将生成一个新的子目录mysql-5.6.23-linux-glibc2.5-x86_64/,此目录下即为mysql的源码文件。

目录说明:

/usr/local/mysql//安装目录

/usr/local/mysql/data//数据库存放目录

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

[root@localdomain~]groupaddmysql

[root@localdomain~]useradd-r-gmysqlmysql

#groupaddmysql

#增加一个名为mysql的用户。

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

2.配置

(1)设置目录权限

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

[root@localdomainmysql]#chown-Rroot:mysql. //把当前目录中所有文件的所有者所有者设为root,所属组为mysql

[root@localdomainmysql]#chown-Rmysql:mysqldata

(2)

[root@localdomainmysql]#cpmy.cnf/etc/my.cnf //将mysql的启动服务添加到系统服务中

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

[root@localdomainmysql]#cd/usr/local/mysql

[root@localdomainmysql]#./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@localdomainmysql]#./bin/mysqld_safe--user=mysql& //启动MySQL,但不能停止

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

关闭MySQL服务

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

复制代码

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

[root@localdomain~]#servicemysql.serverstart

[root@localdomain~]#servicemysql.serverstop

[root@localdomain~]#servicemysql.serverrestart

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

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

[root@localdomainmysql]#cpsupport-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中。

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

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

复制代码

[root@localdomain~]#mysql-urootmysql

mysql>usemysql;

mysql>descuser;

mysql>GRANTALLPRIVILEGESON*.*TOroot@"%"IDENTIFIEDBY"root";  //为root添加远程连接的能力。

mysql>updateusersetPassword=password('xxxxxx')whereUser='root';

mysql>selectHost,User,PasswordfromuserwhereUser='root';

mysql>flushprivileges;

mysql>exit

重新登录:mysql-uroot-p

若还不能进行远程连接,则关闭防火墙

[root@localdomain~]#/etc/rc.d/init.d/iptablesstop

复制代码

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

mysql>GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'******'WITHGRANTOPTION;

3.问题汇总:

(1)FATALERROR:pleaseinstallthefollowingPerlmodulesbeforeexecuting./mysql_install_db

解决方法:[root@localdomainmysql]#yuminstall-yperl-Module-Install.noarch

(2)启动如果报错,应该是MariaDB启动的时候要默认创建一些日志文件,或者运行相关的文件,但是没有创建,或者指定的目录不存在

通常是因为:

一.在/var/log/mariadb/里创建mariadb.log文件没有权限

二.在/var/run/mariadb里创建mariadb.pid也没有权限

chownmysql-R/var/run/mariadb#所有权给mysql用户,否则不能创建/var/run/mariadb/mariadb.pid文件

(3)ERROR2002(HY000):Can’tconnecttolocalMySQLserverthroughsocket‘/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:connecttoserverat'localhost'failederror:'Accessdeniedforuser'root'@'localhost'(usingpassword:NO)'

在my.conf文件中的:datadir下面加入如下内容:skip-grant-tables

重启mysql服务,用命令mysql-uroot进入数据库,用命令:showdatabases;查看是否有mysql数据库

如有名字为mysql的数据库,则用命令:updatemysql.usersetpassword=PASSWORD("密码")whereuser='root';修改密码

用命令:flushprivilege更新权限表;退出后去掉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

#Disablingsymbolic-linksisrecommendedtopreventassortedsecurityrisks

symbolic-links=0

#Settingsuserandgroupareignoredwhensystemdisused.

user=mysql

#Ifyouneedtorunmysqldunderadifferentuserorgroup,

#customizeyoursystemdunitfileformariadbaccordingtothe

#instructionsinhttp://fedoraproject.org/wiki/Systemd

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

#includeallfilesfromtheconfigdirectory

#

!includedir/etc/my.cnf.d

4.设置mysql帐号

mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。

以root帐号连接到mysql服务器:

mysql-uroot

如果提示找不到mysql文件,请尝试使用绝对路径,如本文示例为:

/usr/local/mysql/bin/mysql-uroot

命令成功执行后将进入到mysql命令提示符下:

mysql>

(以下命令均在mysql命令提示符下执行)

改变当前数据库为mysql:

usemysql

设置从本地主机登录的root帐号密码:

setpasswordforroot@localhost=password('yourpassword');

或:

updateusersetpassword=password('yourpassword')whereuser='root'andhost='localhost';

删除匿名帐号:

deletefromuserwhereuser='';

删除密码为空的帐号:

deletefromuserwherepassword='';

删除允许非localhost主机登录的帐号:

deletefromuserwherehost<>'localhost';

执行下面的命令使更改生效:

flushprivileges;

执行下面的命令退出mysql命令行:

quit

或:

/q

5.问题集锦:

(1)eitherhost'localhost.localdomain'nor'localhost'couldbelookedupwith

/usr/bin/resolveip

Pleaseconfigurethe'hostname'commandtoreturnacorrecthostname.

错误:

解决办法

开始初始化数据库

[root@mysqlmedia]#cd/usr/local/mysql/scripts/

[root@mysqlscripts]#./mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/mysql/data/

WARNING:Thehost'mysql'couldnotbelookedupwith/usr/local/mysql/bin/resolveip.

Thisprobablymeansthatyourlibclibrariesarenot100%compatible

withthisbinaryMySQLversion.TheMySQLdaemon,mysqld,shouldwork

normallywiththeexceptionthathostnameresolvingwillnotwork.

ThismeansthatyoushoulduseIPaddressesinsteadofhostnames

whenspecifyingMySQLprivileges!

InstallingMySQLsystemtables.../usr/local/mysql/bin/mysqld:errorwhileloadingsharedlibraries:libaio.so.1:cannotopensharedobjectfile:Nosuchfileordirectory

[root@mysqlscripts]#yuminstall-ylibaio

[root@mysqlscripts]#./mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/mysql/data/

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

[root@localdomainPackages]#cat/etc/hosts

127.0.0.1localhostlocaldomainlocalhost4localhost4.localdomain4

::1localhostlocaldomainlocalhost6localhost6.localdomain6

IP地址localdomain

(2).StartingMySQL..TheserverquitwithoutupdatingPIDfile(/var/lib/mysql/localhost.localdomain.pid

问题描述:[[email protected]]#/etc/rc.d/init.d/mysqldstartStartingMySQL.Managerofpid-filequitwithoutupdatingfile.[失败]---------------------------解决办法:配置的时候有一个步骤是cpsupport-files/my-medium.cnf/etc/my.cnf;就编辑my.cnf,在[mysqld]下面加上:datadir=/usr/local/mysql/data例如#TheMySQLserver[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).ERROR2003(HY000):Can'tconnecttoMySQLserver

一.问题的提出

/usr/local/webserver/mysql/bin/mysql-uroot-h172.29.141.112-p-S/tmp/mysql.sock

Enterpassword:

ERROR2003(HY000):Can'tconnecttoMySQLserveron'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/iptablesstop关闭防火墙

我的问题,就是因为这个原因引起的。关闭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/iptablesstop

相关推荐