MySql默认是不能通过远程访问的
1.启动MySQL服务:
service mysqld start
2.打开MySQL数据库:
mysql -u root -p
回车提示输入密码:输入密码,进入MySQL数据库
3.使用mysql数据库
use mysql;
4.查看用户表
select 'Host','User' from user;
5.更新用户表
UPDATE user SET
Host= '%' WHERE
User= 'root' LIMIT 1;
此句是关键,意思为,更新root用户;%表示为:允许任何ip都可登录
6.强制刷新权限
flush privileges;
此时就可以远程连接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时显示如下错误:
- 关闭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’可以看出来
【忘记密码时,修改密码】
- 登录:
mysql -u root mysql
-
修改登录密码:修改yourPassword处即可
mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';
mysql> FLUSH PRIVILEGES; mysql> exit