linux下mysql安装
记下自己安装mysql的过程:
wget http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.63.tar.gz
tar zvxf mysql-5.1.63.tar.gz
cd mysql-5.1.63
# 新版本的mysql默认不带innodb故要加参数 -with-plugins=innobase 参见http://blog.prosight.me/index.php/2009/06/82
./configure --prefix=/xxx/mysql-5.1.63 --sysconfdir=/xxx/etc/lib --localstatedir=/xxxx/lib/mysql -with-plugins=innobase && make && make install
说明:
--prefix 指明将要安装的路径
--sysconfdir 指明mysql启动时加载的配置文件(my.cnf)路径目录
--localstatedir 指明变量存放目录
这三个参数都是为了确保后面安装成功后能访问这些目录,因为安装mysql不一定需要linux系统root权限。我这个例子的情况就是这样,我没有远程主机root权限,我只对某个目录有777权限,所以在这里指明三个个路径参数,并保证对这三个目录有足够的权限。
这一不下来后就要安装数据库了:
/xxx/mysql-5.1.63/bin/mysql_install_db
配置my.cnf:
首先选择一个模板拷贝到前面指明的--sysconfdir路径中
cp /xxx/mysql-5.1.63/share/mysql/my-medium.cnf /xxx/etc/lib/my.cnf
这里我选择了my-medium.cnf 这个配置模板,要对其进行修改:
1 修改端口,
2 修改socket 路径到具有777权限的路径下 如/tmp/sockt改为 /xxx/tmp/socket
3 将innodb的注释反注释掉。
再就可以启动了,默认的root是没有密码的:
/xxx/mysql-5.1.63/bin/mysqld_safe --user=root &
这样可以启动mysql了,它的日志打在了=/xxxx/lib/mysql /xxxxx.err 中(启动提示写明了),可以据此日志分析问题。
上面的 命令可加参数--defaults-extra-file来指定配置文件路径,如:
/xxx/mysql-5.1.63/bin/mysqld_safe --defaults-extra-file=/xxxx/my.cnf --user=root &
这样启动后,应该初始化root密码 :
/xxx/mysql-5.1.63/bin/mysqladmin -u root password root //此例中初始root用户密码为root
修改密码:
/xxx/mysql-5.1.63/bin/mysqladmin -u'root' -p'oldpasswor' password 'newpassword'
下面尝试连接mysql:
mysql client登陆
/xxx/mysql-5.1.63/bin/mysql -u'root' –p'root'
这样就登陆了mysql client,可进行sql操作了。
现在想使用heidisql远程登录,结果报1130错误,这是因为默认只允许127.0.0.1 和 localhost登陆的,这些信息配置在mysql.user表中记录。
use mysql;
select `host`,`user` from user where user='root';
发现有三条记录
127.0.0.1
localhost
主机域名
那么我们就添加一条权限,加入允许远程主机ip为10.199.1.18登陆的话:
INSERT INTO user SET Host='10.199.1.18',User='root',Reload_priv='Y', Process_priv='Y'; update user set Password = PASSWORD('root'),Select_priv='Y',Insert_priv = 'Y', Update_priv = 'Y', Delete_priv = 'Y', Create_priv = 'Y', Drop_priv = 'Y', Reload_priv = 'Y', Shutdown_priv = 'Y', Process_priv = 'Y', File_priv = 'Y', Grant_priv = 'Y', References_priv = 'Y', Index_priv = 'Y', Alter_priv = 'Y', Show_db_priv = 'Y', Super_priv = 'Y', Create_tmp_table_priv = 'Y', Lock_tables_priv = 'Y', Execute_priv = 'Y', Repl_slave_priv = 'Y', Repl_client_priv = 'Y', Create_view_priv = 'Y', Show_view_priv = 'Y', Create_routine_priv = 'Y', Alter_routine_priv = 'Y', Create_user_priv = 'Y', Event_priv = 'Y', Trigger_priv = 'Y' where `Host`='50.87.25.233'; FLUSH PRIVILEGES;
注意,密码一定要设置,同一用户每一登陆host的密码可以不同(其实同一用户连权限也可因登陆host 不同而设置不同),否则远程连接会报1045 错误。
然后是停止mysql:
/xxx/mysql-5.1.63/bin/mysqladmin shutdown -u'root' -p'root'
参见:
http://mysql-tips.blogspot.com/2005/04/setup-new-users-in-mysql.html