Linux中mysql实现远程访问

时间:2022-11-14 09:15:16

       MySql默认是不能通过远程访问的

1.启动MySQL服务:
       service mysqld start

2.打开MySQL数据库:
       mysql -u root -p回车提示输入密码:输入密码,进入MySQL数据库

3.使用mysql数据库
       use mysql;

4.查看用户表
       select 'Host','User' from user;
       Linux中mysql实现远程访问

5.更新用户表
       UPDATE user SETHost= '%' WHEREUser= 'root' LIMIT 1;

       Linux中mysql实现远程访问
       此句是关键,意思为,更新root用户;%表示为:允许任何ip都可登录
6.强制刷新权限
       flush privileges;
       Linux中mysql实现远程访问

       此时就可以远程连接mysql数据库了!!!

【mysql服务启动不了】

  • 显示:Job for mysqld.service failed because the control process exited
    with error code. See “systemctl status mysqld.service” and
    “journalctl -xe” for details.
  • 查看日志:vim /var/log/mysqld.log,显示什么进程已存在
  • 所以就干脆杀死了所有的进程:ps -ef|grep
    mysql | grep -v grep |awk '{print $2}' | xargs kill -9
  • 此时服务能起来了,但是密码登录时进不去,不使用密码能登进去,use mysql时显示如下错误:Linux中mysql实现远程访问
    • 关闭mysql: # service mysqld stop
    • 屏蔽权限: # mysqld_safe –skip-grant-table
                    屏幕出现: Starting demo from …..后
    • 新开一个终端输入
  # mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES;
mysql> \q

       完美解决!!!
       原因:mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的”@’localhost’可以看出来Linux中mysql实现远程访问

【忘记密码时,修改密码】

  • 登录:mysql -u root mysql
  • 修改登录密码:修改yourPassword处即可

    mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';
    mysql> FLUSH PRIVILEGES; mysql> exit