做为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%"php