作为php里最常用的数据库mysql,除掉最常用的mysql语句外,mysql的一些管理也是需要了解的。
Linux里登录mysql:
mysql -h IP -uroot -p
enter后 会提示输入密码。
一个比较常见遇到的问题是(忘记了root密码),解决方案:
找到my.cnf(mysql的配置文件,在windows里是my.ini)
Linux的默认目录是 /etc/mysql
在mysqld里加上一句
skip-grant-tables
保存退出 service mysql restart 数据库服务重启。
然后mysql登录的时候,可以不需要密码。对数据库进行重新设置
UPDATE user SET Password = password ('new-password’) WHERE User = ‘root’
这样就更改了root的新密码。
然后flush privileges ; (一定要刷新权限,否则是不会生效的)。
然后service mysql restart
这样就完成了不知道数据库密码的情况下,对密码的更改。
拥有了数据库根目录权限后,在大多数的使用场景里面,我们需要管理一个数据库服务器,但是每个项目仅仅是使用了一个或者俩个数据库,而且为了保证数据库整体的安全,并不提倡给每个项目都是根目录权限。一般的应用场景是,给某个项目指定特定连接的数据库和操作权限(有的用户只能有查看权限,而有的用户拥有全部的权限) 新增加数据库的权限语句,可以精确到具体的数据表权限操作
GRANT ALL PRIVILEGES ON test.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' ;
给数据库帐号增加了权限后,要让授权用户立即生效,必须加上下面的
FLUSH PRIVILEGES;(让赋予了权限的帐号生效)
这样就完成了数据库系统的单独数据库的分权(all privileges可以换成对应的select insert update delete等操作)
远程权限登录:
GRANT ALL PRIVILEGES ON test.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' ; 这样就讲限定从192.168.1.3拓展到任意远程主机可以进行登录了。为了安全,一般用localhost(只允许使用数据库)。
给某个用户赋予不同的权限
grant select,insert,update,delete,drop,create on wifijunData.* to hafu@"%" identified by "test01%"