mysql 数据库 mysql系统库,user用户表 host字段表示:指定登录的ip、而%则是个通配符
4.1、mysql 服务启动关闭指令(有时候范抽抽不建议使用)
1、登录报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方案:service mysql stop(关闭mysql服务)
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql(登录mysql)
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';(修改用户的登录密码)
FLUSH PRIVILEGES;(刷新)
quit;(退出mysql)
service mysql(d) restart(重启mysql服务)
mysql –u root –p(登录链接mysql)
输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4.2、方案一:mysql用户操作
修改用户密码:mysql user(用户) password(密码) 修改登入密码
4.2.1 方案二:用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for [email protected] = password('123');
4.2.2、方案三:用mysqladmin操作
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
4.2.3、方案三:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;(使用mysql的库)
mysql> update user set password=password('123') where user='root' and host='localhost';(修改user表的密码语句)
mysql> flush privileges;(刷新)
4.2.4、方案四:最简单的建议使用的
、修改/etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1
这一行配置让 mysqld 启动时不对密码进行验证
2、重启mysqld 服务:systemctl restart mysqld
3、使用 root 用户登录到 mysql –u root mysqld
4、切换到mysql数据库,更新 user 表:
mysql5.7版本:
update user set authentication_string = password('123456'),password_expired = 'N', password_last_changed = now() where user = 'root';
在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string
mysql5.7版本之前:
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
5、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1的内容,接触免密登录设置
4.3、创建用户:
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
4.4.、用户授权登录
GRANT ALL PRIVILEGES ON *.* TO 'chen'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
(第一个chen表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个123456表示密码)。
指定192.168.1.127 IP可连接 chen 数据库 :
GRANT ALL PRIVILEGES ON *.* TO 'chen'@'192.168.1.127' IDENTIFIED BY '123456' WITH GRANT OPTION;