Linux下源码安装MySQL

来源:互联网 发布:好的视频剪辑软件 编辑:程序博客网 时间:2024/05/21 18:59
Linux安装mysql——源码安装


一、mysql安装前准备工作


1.安装make编译器
make编译器下载地址:http://www.gnu.org/software/make/
 
(系统默认自带)查看自己的系统是否安装某个软件,如果已经有了,就不用在安装了,但是也有可能之前被卸载了。
如果你之前是使用rpm -ivh make装的,用
# rpm -qa | grep make肯定是能够找到的。
如果你是用
make && make install装的。那么最好直接去找执行程序,就知道有没装上去
# find / -name matlab
如果装了,它会告诉你执行程序被释放到哪个目录了。
++++++++++++++++++++++++++++++++++++++++++
# rpm -qa 是查看该软件是否被安装,# grep和# find是查看文件位置
++++++++++++++++++++++++++++++++++++++++++
 
# tar zxvf make-3.82.tar.gz 
# cd make-3.82 
# ./configure 
# make 
# make install 
 
 
2.安装bison
bison下载地址:http://www.gnu.org/software/bison/
 
# tar zxvf bison-2.5.tar.gz 
# cd bison-2.5 
# ./configure 
# make 
# make install 


3.安装gcc-c++
gcc-c++下载地址:http://www.gnu.org/software/gcc/
 
# tar zxvf gcc-c++-4.4.4.tar.gz 
# cd gcc-c++-4.4.4 
#./configure 
# make 
# make install 


4.安装cmake (mysql5.5以后是通过cmake来编译的)
cmake下载地址:http://www.cmake.org/
 
# tar zxvf cmake-2.8.4.tar.gz 
# cd cmake-2.8.4 
#./configure 
# make 
# make install 


5.安装ncurses
ncurses下载地址:http://www.gnu.org/software/ncurses/
 
# tar zxvf ncurses-5.8.tar.gz 
# cd ncurses-5.8 
#./configure 
# make 
# make install


或者:rpm -ivh  ncurses-5.7-3.20090208.el6.x86_64.rpm


6.安装 ncurses-devel


rpm -ivh ncurses-devel-5.7-3.20090208.el6.x86_64.rpm


7、检查是否有已经安装过MySQL,如果有的话先卸载


查看是否有安装没卸载的版本  rpm -qa|grep -i MySQL
如果有强制卸载:rpm -e --nodeps   版本名称




二、开始安装MySQL


(1)MySQL5.5下载


MySQL5.5下载地址:http://dev.mysql.com/ 
这里我在这里下载的mysql-5.5.10.tar.gz
ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/
准备工作


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


[root@ rhel5~]#mkdir -p /usr/local/mysql                 //安装mysql 
[root@ rhel5~]#mkdir -p /usr/local/mysql/data            //存放数据库


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


[root@ rhel5~]groupadd mysql
[root@ rhel5~]useradd mysql -g mysql -M -s /sbin/nologin


参数说明:
#增加一个名为 mysql的用户。
-g:指定新用户所属的用户组(group)
-M:不建立根目录
-s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。


(4)安装mysql


[root@ rhel5 local]#tar zxvf mysql-5.5.10.tar.gz
[root@ rhel5 local]#cd mysql-5.5.10


[root@ rhel5 mysql-5.5.10]#cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data 
-DSYSCONFDIR=/etc    
-DWITH_MYISAM_STORAGE_ENGINE=1 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_MEMORY_STORAGE_ENGINE=1  
-DWITH_READLINE=1      
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock  
-DMYSQL_TCP_PORT=3306  
-DENABLED_LOCAL_INFILE=1     
-DWITH_PARTITION_STORAGE_ENGINE=1        
-DEXTRA_CHARSETS=all                        
-DDEFAULT_CHARSET=utf8        
-DDEFAULT_COLLATION=utf8_general_ci


(/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data  -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock  -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1    -DEXTRA_CHARSETS=all  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci) 


[root@ rhel5 mysql-5.5.10]#make
[root@ rhel5 mysql-5.5.10]#make install




参数说明:
# cmake ./
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql          \    #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data            \    #数据文件存放位置
-DSYSCONFDIR=/etc                                \    #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1                   \    #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1                 \    #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1                   \    #支持Memory引擎
-DWITH_READLINE=1                                \    #快捷键功能(我没用过)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock               \    #连接数据库socket路径
-DMYSQL_TCP_PORT=3306                            \    #端口
-DENABLED_LOCAL_INFILE=1                         \    #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1                \    #安装支持数据库分区
-DEXTRA_CHARSETS=all                             \    #安装所有的字符集
-DDEFAULT_CHARSET=utf8                           \    #默认字符
-DDEFAULT_COLLATION=utf8_general_ci
 




注意事项:


重新编译时,需要清除旧的对象文件和缓存信息。


# make clean


# rm -f CMakeCache.txt


# rm -rf /etc/my.cnf


2.配置


(1)设置目录权限


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


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


[root@ rhel5 mysql]# chown -R mysql:mysql data


(2)设置mysql配置文件my.cnf
[root@ rhel5 mysql]# cp support-files/my-medium.cnf /etc/my.cnf //将mysql的启动服务添加到系统服务中


vi /etc/my.cnf


//加上以下内容  
[mysqld]  
basedir = /usr/local/mysql  
datadir = /usr/local/mysql/data  
log-error = /usr/local/mysql/mysql_error.log  
pid-file = /usr/local/mysql/mysql.pid  
user = mysql  
tmpdir          = /tmp 


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


[root@ rhel5 mysql]# cd /usr/local/mysql
[root@ rhel5 mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql 


(4)设置环境变量


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


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


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


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


(5)手动启动mysql




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


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


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


关闭MySQL服务


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


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


[root@ rhel5~]# service mysql.server start  
[root@ rhel5~]# service mysql.server stop
[root@ rhel5~]# service mysql.server restart
如果上述命令出现:mysql.server 未识别的服务


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


[root@ rhel5 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默认没有密码,所以这里我们没有输入密码就直接连上了。
 
--修改密码,这个是安装Server 中提示的:
[root@rac2 ~]# /usr/bin/mysqladmin -u root password root
[root@rac2 ~]# mysql
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO)
--修改密码之后,就提示要使用密码了。
 
[root@rac2 ~]# mysql -u root -p
Enter password:


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.15 MySQL CommunityServer (GPL)




2.3.3 查看MySQL端口 3306, 这个是默认端口:
[root@rac2 ~]# netstat -nat|grep 3306
tcp       0      0 192.168.3.100:32842         192.168.3.100:3306          TIME_WAIT  
tcp       0      0 :::3306                     :::*                        LISTEN     
 
(8)设置开机自启动
--查看MySQL 开机自启动设置:
[root@rac2 ~]# chkconfig --list |grep mysql
mysql           0:off   1:off  2:on    3:on    4:on   5:on    6:off
这里的数字分别代表Linux启动的不同模式,3是命令行,5是窗口。
 
(9)关闭开机自启动
[root@rac2 ~]# chkconfig mysql off
[root@rac2 ~]# chkconfig --list |grep mysql
mysql          0:off   1:off  2:off   3:off   4:off  5:off   6:off
 
(10)启用开机自启动:
[root@rac2 ~]# chkconfig mysql on
[root@rac2 ~]# chkconfig --list |grep mysql
mysql           0:off   1:off  2:on    3:on    4:on   5:on    6:off
[root@rac2 ~]#
 
(11)将Mysql 从chkconfig服务里删除:
[root@rac2 ~]# chkconfig --del mysql
[root@rac2 ~]# chkconfig --list |grep mysql
 
(12)将Mysql 添加到chkconfig里:
[root@rac2 ~]# chkconfig --add mysql      
[root@rac2 ~]# chkconfig --list |grep mysql
mysql           0:off   1:off  2:on    3:on    4:on   5:on    6:off


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




[root@ rhel5~]# 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@ rhel5~]# /etc/rc.d/init.d/iptables stop




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


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




三、MySQL的用户权限设置


首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。


注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
    用户:lamp  用户数据库:lampDB




用户所有的权限:


--权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。


--当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。


--当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。


--操作完成每一项之后,想及时生效 执行flush privileges;




1.新建用户。


//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql>  CREATE USER 'lamp'@'192.168.0.219' IDENTIFIED BY '123456'; 
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:lamp  密码为:123456  的用户。


然后登录一下。


mysql>exit;
@>mysql -u lamp -p
@>输入密码
mysql>登录成功


2.为用户授权。


//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(lampDB)
mysql>create database lampDB;
//授权lamp用户拥有lamp数据库的所有权限。
>grant all privileges on lampDB.* to lamp@192.168.0.219 identified by '123456' with grant option;;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作


/*
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on lampDB.* to lamp@192.168.0.219 identified by '123456' with grant option;;
//刷新系统权限表。
mysql>flush privileges;
*/


3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User='lamp' and Host='192.168.0.219';
mysql>flush privileges;
//删除用户的数据库
mysql>drop database lampDB;


4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User='lamp' and Host='192.168.0.219';
mysql>flush privileges;


5、删除某个用户
   drop user 用户名@'%';
   drop user 用户名@ localhost; 


6、取消某个用户的某些权限;
   revoke insert,select,update,delete ON lampDB.* from 'lap'@'192.168.0.219' IDENTIFIED BY '123';
7、取消用户所有权限:
   revoke all on *.* from myroot@192.168.0.219;


8、增加某个用户的某些权限;
   grant insert,select,update,delete on lampDB.* to lap@192.168.0.219 identified by '123456' with grant option;


9、查询用户具有什么权限:
  show grants for lap@192.168.0.219;


10、查询用户密码:
    mysql密码是动态md5加密,是不可逆向查询的
    修改用户密码:
    update mysql.user set password=password('新密码') where User='test' and Host='localhost';


11、运程用客户端连接MYSQL:
    格式: mysql -h主机地址 -u用户名 -p用户密码
    mysql -h 192.168.0.15 -u lap -p123456
    通过dos窗口登陆MySQL,首先找到MySQL安装目录下的bin目录,格式如下:
    C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -h 192.168.0.15 -u lap -p123456




grant all privileges on auction.* to myroot@192.168.0.211 with grant option;
grant insert,select,update,delete,create on fund.* to myroot@192.168.0.210  with grant option;
update mysql.user set Host='192.168.0.211' where User='myroot';
flush privileges;
0 0