mysql数据库
2017年04月26日

概述

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

重置mysql root密码

阿里云的mysql root密码不知道

mysql -u root -p 

总是提示没有权限,解决办法

  1. 禁用权限认证表
vim /etc/my.cnf

找到[mysqld]部分,在显摆你添加一行skip-grant-tables

[mysqld]
skip-grant-tables
  1. 重启mysql
service mysqld restart
  1. 更新授权表密码

  2. 登录mysql

mysql -u root
  1. 修改密码
    如果是mysql 5.7+
update mysql.user set authentication_string=password('新密码') where user='root' and host='localhost';  
update mysql.user set authentication_string=password('新密码') where user='root' and host='127.0.0.1';  
flush privileges;  

如果mysql版本小于5.7

update mysql.user set password=password('新密码') where user='root' and host='localhost';
update mysql.user set password=password('新密码') where user='root' and host='127.0.0.1';
flush privileges;  
  1. 重新启用授权表
vim /etc/my.cnf

# 注释掉skip-grant-tables
[mysqld]
#skip-grant-tables
  1. 重启mysql
service mysqld restart
  1. 测试修改成果
mysql -u root -p

mysql在普通用户下无法登录

之前MySQL服务端本机上使用密码登陆root账号是没有问题的,但是今天不知道是因为动了哪里,登陆失败并有这个错误代码:

mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

解决步骤:

  1. 停止mysql服务
~$ sudo service mysql stop
  1. 以安全模式启动MySQL
~$ sudo mysqld_safe --skip-grant-tables &
  1. MySQL启动之后就可以不用密码登陆了
 mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.10 MySQL Community Server (GPL)
  1. 查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。
mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user      | plugin                |
+-----------+-----------------------+
| root      | auth_socket           |
| mysql.sys | mysql_native_password |
| dev       | mysql_native_password |
+-----------+-----------------------+
3 rows in set (0.01 sec)

关于auth_socket,在官方有说明,反正现在暂时不用它, 那就把这里改了。

mysql> update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  1. 重启服务,问题就解决了
sudo service mysql stop
...
 * MySQL Community Server 5.7.10 is stopped
sudo service mysql start
..
 * MySQL Community Server 5.7.10 is started

查看是否能登录

mysql -u root -p

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.10 MySQL Community Server (GPL)