非root使用源代码安装MySQL server
原文地址:http://www.708luo.com/?p=16
- 从mysql官网下载源码。5.5.24源码地址
- 下载并安装cmake,用来生成makefile。2.8.9地址。
- 解压mysql-5.5.24.tar.gz,进入解压后的目录
- 运行
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 .
运行make && make install
进入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也可以解决这个问题