使用Ubuntu18.04.5登录MySql问题

使用Ubuntu18.04.5登录MySql问题

最近开始学习mysql,在登录mysql时出现了以下问题。

  • 使用$mysql -u root -p命令登录,在输入安装mysql时设置的密码后,出现以下报错

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    
  • 提示权限不足,拒绝访问。

  • 老师给出的解决方案是加上sudo,但经过测试又发现新的问题。

    • 使用sudo确实可以用mysql -u root -p输入密码登录数据库,但需要输入两次密码,特麻烦
    • 经测试发现,如果加上sudo,不输入密码居然也能登录。。。。。
    • 也就是说使用sudo mysql命令,或者sudo mysql -u root命令可以直接登录
    • 这显然不安全
    • 测试了一下,使用sudo mysql -u root -p输入密码登录与sudo mysql直接登录存在的唯一区别就是连接id不同。。。
    • 在测试不加sudo,直接mysql或者mysql -uroot都不能登录

解决方案:

  • 首先,老师给出的解决加sudo问题的方案是改配置文件。
  • 在ect/mysql/my.cnf中加上
[mysqld]
skip-grant-tables
  • 老师说改了有bug,输入任何密码都可以登录

  • 实际上这条配置信息的含义就是跳过登录认证,这时候加-p用密码登录显然是没啥意义的

  • 这显然也称不上万全之策,也并不安全

  • 瞎折腾半天总算能比较完备的解决这个问题了,可以不加sudo使用mysql命令同时密码仍然生效。

  • 问题的本质是系统库mysql下的user表中的root用户登录方式配置存在问题

  • 输入use mysql在mysql数据库中输入select User,Host,plugin from user查看各用户的配置

  • 输入update user set plugin = "mysql_native_password";更新plugin字段。

  • flush privileges;刷新

  • 此时已经可以使用密码正常登录,但是root的密码需要重设一下

  • ps:如果没改密码就退出的话,会发现用安装时设置的密码是登不上的,这时候只有先去该配置文件跳过认证,再进数据库改密码

  • ps2:每次改动配置文件需要重启一下mysql才能生效。命令是service mysqld restart

  • 在数据库下输入alter user 'root'@'localhost' identified with mysql_native_password by '你的密码';重设密码

  • 大功告成

  • ps:如果改过配置文件别忘了注释掉再重启mysql

  • 现在已经可以正常使用mysql命令登录,密码也在生效,不输入密码会报错

  • 数据库编程使用root用户应该也不再需要加sudo了(尚未验证)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值