背景

在测试机器上搭建 MySQL 实例, 发现存在两个问题:

  1. 权限问题, 没法创建数据库
  2. 远程 IP 无法访问 MySQL

在网上找到相应解决方案

问题解决

  1. 无法创建数据库

    • 原因: 非 root 权限安装 MySQL, mysql 的服务是 mysql.server, 用 root 用户建立数据库

    • 解决:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      
      # /etc/init.d/mysql stop
      # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
      # mysql -u root mysql
      mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
      mysql> FLUSH PRIVILEGES;
      mysql> quit
      # /etc/init.d/mysql restart
      # mysql -uroot -p
      Enter password: <输入新设的密码newpassword>
      # 然后新建 DB
      
  2. 远程 IP 无法访问 MySQL

    • 原因: 可能账号不允许被远程登录, 只能通过本机登录

    • 现象: SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'(use Password Yes)

    • 解决: 在 MySQL 控制台输入以下命令, 允许 MySQL 可以被其他机器登录(白名单配置)

      1
      2
      
      CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';