一直很重视从压缩包安装MySQL,在Windows下很简单.zip直接解压就好(Windows的权限管理实在是弱--||)。但是在Fedora Core7下通过.tar.gz解压却启动不了,无奈之下从MySQL官方文档入手,开始了安装历程:
一、前期准备
1. 为mysqld增加一个登录用户和组:
shell> groupadd mysql
shell> useradd -g mysql mysql
2. 进入安装目录,以/usr/local为例,解压.tar.gz二进制分发版。
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
或者:
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
3. 在mysql目录下,你会在mysql目录下发现几个文件和子目录,对安装目的最重要的是“bin”和“scripts”子目录。
· bin
这个目录包含客户端程序和服务器,你应该把这个目录的完整路径加到PATH环境变量,以便shell能正确的找到MySQL程序。
· scripts
这个目录包含mysql_install_db脚本,用来初始化mysql数据库的 授权表,其中贮存了服务器访问允许。
Note: 如果还没有安装MySQL,必须创建MySQL授权表:
shell> scripts/mysql_install_db --user=mysql
4. 将程序二进制的所有权改为root,数据目录的所有权改为运行mysqld 的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。
(备注:mysql中INSTALL 中安装说明,这点不同,可以考虑
shell> cd mysql
shell> chown -R mysql .
shell> chrgrp -R mysql .
)
5. 到这里,按照MySQL的文档,服务器便可以启动:
shell> bin/mysqld_safe --user=mysql &
但是,在Fedora Core7下,问题便出现了,提示如下信息,无法启动服务器。
-------------------------------------------------------------------------
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
071030 02:28:14 mysqld ended
------------------------------------------------------------------------------
问题出现最初没有查看日志(以后要养成看日志的习惯!!)
---------------------------------------------------------------------
071030 14:23:56 mysqld started
nohup: ignoring input
071030 14:23:56 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
071030 14:23:56 mysqld ended
---------------------------------------------------------------------------
通过查看/var/log/mysqld.log基本确定是权限的问题,修改/var/lib/mysql/下的这几个文件权限:
ibdata1 ib_logfile0 ib_logfile1
shell> chmod 766 /var/lib/mysql/ib*
备注:在fedora9下,该日志文件路径
mysql安装路径(默认/usr/local/mysql)./data/主机名.err
我的错误日志路径 /usr/local/mysql/data/cowman.err
mysql client默认使用/tmp/mysql.sock启动socket,但是/tmp/mysql.sock不存在,mysql.sock在/var/lib/mysql/mysql.sock,所以或者创建链接指向实际mysql.sock,或者更改mysql client的默认设置。
1. 在/tmp下创建指向/var/lib/mysql/mysql.sock的链接。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2. 更好mysql client配置(/etc/my.cnf)
编辑/etc/my.cnf,加入client配置。
[client]
socket=/var/lib/mysql/mysql.sock
还需注意以下问题:
昨日在自己电脑上装mysql 4.0.26 ,再装phpMyAdmin,都正常,可登陆时总是提示: ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES) 试N次,找了很多资料,都不行。反正资料上行,但我不行。 后来在winMySQLAdmin里把my.ini setup里的密码清空了,居然能登陆了!! 兴奋!但如用密码则呢们登陆问题还是没解决。不过我是在自己电脑上测试的,反正不做服务器,不用密码也没问题。 记载在博客里,防止下次忘记。 1>将mysql的bin目录添加到path环境变量运行cmd,然后写入命令:mysqld-nt --skip-grant-tables安全模式下启动mysql,然后重新打开一个CMD命令行窗口,输入mysql -uroot -p,进入mysql最后用update mysql.user set password=PASSWORD('新密码') where User='root';修改密码 |
解决MySQL不允许从远程访问的方法
解决方法:
1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2、授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WI
TH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES
使修改生效.就可以了
另外一种方法,不过我没有亲自试过的,在youkuaiyun.com上找的,可以看一下.
在安装mysql的机器上运行:
1、d:/mysql/bin/>mysql -h localhost -u root
//这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
//退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦。
其中有一段如下:
071112 0:22:06 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)
071112 0:22:06 [ERROR] Can't start server: can't create PID file: No such file or directory
071112 00:22:06 mysqld ended
#cd /var/run/
#ls
mysqld目录不存在,创建它:
#mkdir /var/run/mysqld
#cd /var/run/mysqld
创建文件mysqld.pid:
#touch mysqld.pid
#cd..
#chown -R mysql mysqld .
#cd /usr/local/mysql/
#bin/mysqld_safe --user=mysql &
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
能正常启动