前因

本来在segmentfault上找到一个很好的安装教程,一切也都很顺利,可是修改完root密码之后居然登录不上去了,只好重置root密码,这个过程中发现原来是mysql在一个版本的时候将存储用户密码的字段名给修改了,所以前面第一次对root用户的密码重置其实是有问题的

mysql密码恢复

大体流程是先去修改配置文件使得mysql的登录不需要密码,然后用root账户直接登录mysql,进入mysql数据库,用update语句修改user表中root对应的密码

  • 修改MySQL登录设置
    1
    vi /etc/my.cnf
    在[mysqld]中加入skip-grant-tables保存退出,这个语句使得mysql登录可以不走密码验证
  • 重启mysql服务使刚才的修改生效
    1
    /etc/init.d/mysqld restart
  • 登录修改root密码
    1
    2
    3
    4
    5
    6
    /usr/local/mysql/bin/mysql -uroot

    use mysql
    update user set authentication_string=password('newPassword') where user='root';
    flush privileges;
    quit
  • 将配置文件修改回去,删除刚才加的那个语句,保存退出
  • 重启mysql服务
  • 现在一切ok了

路径问题

安装完成后在命令行中输入mysql是找不到服务的,以为系统只默认扫描/usr/bin目录中的可执行文件,这时需要将mysqld所在的目录软链到/usr/bin去

1
ln -s  /usr/local/mysql/bin/mysql  /usr/bin

这样就可以直接在命令行中通过mysql访问了,没有试过重启后是否还生效

启动报错

1
2
3
4
5
6
# 查看配置文件,里面包含了错误日志文件路径,查看日志来处理问题
vi /etc/my.cnf

# 报错:Can't create/write to file '/var/run/mysqld/mysqld.pid'
# 权限问题,而且还和是用root用户访问有关,执行以下命令再启动
chown mysql:mysql /var/run/mysqld

用户创建和授权

1
2
3
<!--创建一个所有地址都能访问的用户,授予对所有表的所有权限-->
CREATE USER 'firefly'@'%' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'firefly'@'%';