非root使用源代码安装MySQL server

原文地址:http://www.708luo.com/?p=16

  1. 从mysql官网下载源码。5.5.24源码地址
  2. 下载并安装cmake,用来生成makefile。2.8.9地址
  3. 解压mysql-5.5.24.tar.gz,进入解压后的目录
  4. 运行cmake -i,设置三个变量:CMAKE_INSTALL_PREFIX,MYSQL_DATADIR,SYSCONFDIR,其他默认即可。这三个值默认是/usr/local/mysql作为根目录,可以设置为/home/$USER/mysql或者其他地址。或者直接运行cmake -D CMAKE_INSTALL_PREFIX=/home/$USER/mysql -D MYSQL_DATADIR=/home/$USER/mysql/data –D SYSCONFDIR=/home/$USER/mysql/etc .
  5. 运行make && make install
  6. 进入mysql安装目录,即CMAKE_INSTALL_PREFIX指定地址,运行nohup ./bin/mysqld &启动mysql

 

 

顺便补充几个mysql数据库管理命令:

1. 创建用户名为user1/密码为password的用户:create user 'user1'@'%' identified by 'password'

2. 删除用户drop user 'user1'@'%'

3. 用户权限相关:

    grant all on *.* to 'user1'@'%' :给用户user1开通所有数据库所有表的全部权限

    grant all on *.* to 'user1'@localhost : 给本地登录的用户user1开通所有数据库所有表的全部权限

    grant select on db_a.table_b to 'user1'@'%' :给用户user1开通数据库db_a中table_b表的select权限

    show grants for user1 :查看user1用户的权限

    revoke all on *.* from 'user1'@'%' :撤销用户user1所有数据库所有表的全部权限

4. 创建/删除数据库: create database database1; drop database database1;

 

另外,如果新创建的用户使用密码无法登录,不使用密码反而可以登录的情况。是因为mysql中存在可以本地登录的匿名用户,删除本地登录的匿名用户即可解决这个问题(drop user ''@localhost)。

具体原因:

1. mysql中用来标示用户的不仅仅有用户名,还有登录地址。如:'user1'@localhost'和'user1'@'ip1'是不同的(ip1为一个远程地址)

2. 用户登录的时候,是从mysql.user表从前往后匹配的

3. 如果创建一个'user1'@'%'的用户,在mysql.user表中会排在''@localhost'(表示本地登录的匿名用户)之后

4. 本地登录使用mysql –uuser1 –ppassword时,实际上是通过mysql –hlocalhost –uuser1 –ppassword在登录,会首先匹配到''@localhost'这条记录。因此就变成了本地使用匿名账户登录,而本地匿名用户一般是不需要密码的,这时就出现了使用密码不能登录,不使用密码反而可以登录。

5. 聪明的人应该已经可以想到,再创建一个'user1'@localhost也可以解决这个问题

posted on 2012-09-27 20:02  悟空不悟空  阅读(360)  评论(0编辑  收藏  举报