mysql相关
mysql相关
用户管理
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接。
- 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:
CREATE USER username IDENTIFIED BY 'password'; - 新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
授予username用户在所有数据库上的所有权限。
说明:*.*表示所有的库上的所有的表
- 如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:
EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';
甚至还可以指定该用户只能执行 select 和 update 命令:
GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。
另外每当调整权限后,通常需要执行以下语句刷新权限:
FLUSH PRIVILEGES;删除刚才创建的用户:
DROP USER username@localhost;
mysql账户密码
第一种方式:
- 找出别人的链接的ID
show processlist;
在系统下mysqladmin -uroot -ppassword kill 要杀的ID
先修改了root密码,语句如下:
UPDATE mysql.user SET PASSWORD=PASSWORD(‘root’) WHERE USER=’root’;
FLUSH PRIVILEGES;
- 限制下安全吧,root授权的时候只给自己的IP进行授权
grant ALL on . to “root”@”自己的IP” identified by “密码”;
FLUSH PRIVILEGES;
下面好像可以增加了一个新的用户。
第二种方式:mysql_native_password
修改密码加密方式,改成mysql_native_password
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;
然后修改密码:
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpassword’);
或者执行命令flush privileges使权限配置项立即生效。
这种方式,可以在mysql.user表中看到,password字段中内容为空,而plugin字段中,为mysql_native_password。另外,authentication_string字段中,多了一些内容。在实际操作中,发现password中有内容了,而原来的还是为空。
忘记密码
只需要跳过权限登录MySQL 服务器端,在cmd中执行 mysqld –skip-grant-tables。需要先结束mysqld服务进程。
说明
仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host:
SELECT User, Host FROM user;
注意事项
特殊字符
- !(验证过,确实如此)
密码中含有叹号(!),那么在控制台登录时会出现错误哦,但是PHP能正常的访问。 - &
如果有特殊字符&,那么就会出现如下提示:-bash: syntax error near unexpected token `&’
mysql.user表中Host为%的含义
Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。
而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。
这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事。
数据库备份
- 备份
mysqldump -uroot -pshinestb –databases publish led meetings shinevideomeeting iptv cdnserver interactive ctinteractive > 文件.sql; - 恢复
mysql -uroot -pshinestb publish < 文件
https://www.cnblogs.com/wanghetao/p/3806888.html
https://www.cnblogs.com/libin6505/p/8269035.html