如果出现Access denied for user 'root'@'localhost' (using password: YES)应该是密码错了,直接强行修改密码好了。先停掉mysql.
# service mysql stop
然后修改配置文件
# vim /etc/my.cnf
在[mysqld]后面任意一行添加skip-grant-tables用来跳过密码验证的过程
接下来我们需要重启MySQL
# /etc/init.d/mysqld restart
重启之后输入命令mysql即可进入mysql了,然后开始修改密码。
mysql> use mysql;
# 这里修改密码的命令在5.7以上和5.7以下是不同的 需要注意
mysql> update user set authentication_string=passworD("你的密码") where user='root';
flush privileges;
mysql> quit
完成后可以把配置文件中的跳过密码验证去掉。
然后就可以正常使用啦。
7. 外部访问
首先进入mysql,
# mysql -u root -p
接着创建远程连接 MySQL 的用户 mysql命令
-- 创建用户、密码及权限范围 第一个 roo t为用户名 @后为适用的主机,‘%’表示所有电脑都可以访问连接,第二个 root 为密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'root' WITH GRANT OPTION;
-- 立即生效
mysql> flush privileges;
查看数据库用户:
-- 使用 mysql 库
mysql> use mysql;
-- 查看用户
mysql> SELECT DISTINCT CONCAT('User: [', user, '''@''', host, '];') AS USER_HOST FROM user;
-- 查看端口
mysql> show global variables like 'port';
--mysql 默认端口为3306
解决防火墙问题
防火墙默认只开放了22端口,要访问数据库要么关掉防火墙要么修改配置文件,开放3306端口
修改防火墙配置: 命令
# vim /etc/sysconfig/iptables
添加以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
然后重启防火墙
# service iptables restart
最后查看服务器IP
# ip a
到这里应该就可以通过IP和端口号远程连接服务器上的MySQL了。
8. 问题
mysql中执行命令出现以下错误:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决: 修改用户密码
mysql> alter user 'root'@'localhost' identified by '你的密码';