日期:2014-05-16  浏览次数:20712 次

linux下非root权限的mysql安装
1.下载mysql的安装包我用的是mysql-5.1.28-rc.tar.gz,把mysql-5.1.28-rc.tar.gz解压缩
tar -zxvf mysql-5.1.28-rc.tar.gz

2.进入 解压后的文件夹 cd mysql-5.1.28-rc

3.编译# ./configure --prefix=/***要安装的目录/mysql --with-charset=gbk --with-plugins=innobase
#make
#make install
如: #./configure --prefix=/home/linghl/mysql --with-charset=gbk --with-plugins=innobase & make & make install

4.注视掉my.cnf文件中的skip-federated
安装目录/bin/ ./mysql_install_db --user=XX (xx为Linux系统当前登录用户名)
如: ./mysql_install_db --user=linghl
如果不行,加上defaults-file如:./mysql_install_db --defaults-file=/home/linghl/mysql/my.cnf --user=linghl

报错:unknown option '--skip-federated'
解决的方法是:
1、#vi /etc/my.cnf
#skip-federated 将此行注释掉
即可。
2、或者编译的时候加上如下参数:
--with-plugins=all

5.拷贝一份配置到mysql的根目录
下面并且重新命名为my.cnf
Find . –name ‘my-medium.cnf’ –print 找到my-medium.cnf文件,将该文件拷贝的mysql安装目录,将文件名改为my.cnf
如:cp support-files/ my-medium.cnf   / home/linghl /mysql/my.cnf

6.修改my.cnf文件 socket的位置
port = 3308(看情况如果用原始端口没有必要修改)
socket = /***要安装的目录/mysql/mysql.sock (默认是在 /tmp/mysql.sock 因为我们是普通用户不能够操作/tmp/,mysql.sock这个文件在启动mysql时会自动生成,注意启动时的日志信息,如果报错,查看mysql安装目录下面的var目录里面的报错日志,可发现原因)

以下可以根据自己的需求来修改,可以不用改动
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 1024
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
wait_timeout=86400
default-character-set=gbk
max_connections=6000
basedir=/安装的路径/mysql
datadir=/安装的路径/mysql/var
query_cache_size = 256M
thread_cache_size = 100

7.启动mysql服务
/安装的路径/mysql/bin/mysqld_safe --defaults-file=/安装的路径/mysql/my.cnf  如下:
/home/linghl/mysql/bin/mysqld_safe --defaults-file=/home/linghl /mysql/my.cnf


8.进入mysql数据库
/安装的路径/mysql/bin/mysqld   -S /安装的路径/mysql/mysql.sock
如: /home/linghl/mysql/ bin/mysql –S  /home/linghl/mysql/mysql.sock
正常的话,就进入数据库了

到此,已经全部安装完成!

设置root用户密码 /bin/mysqladmin –uroot  password 123456

设置所有的主机都可以访问mysql,不然远程无法访问
grant all privileges on *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;flush privileges;

删除用户,收回权限
delete from mysql.user where user=' linghl ' and host='localhost';
revoke all on testuser .* from ' linghl '@localhost;