1.如果忘记root密码
killall -TERM mysqld
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables ///usr/local/mysql为mysql安装目录
可以用mysqladmin 修改:root
mysqladmin -u password 'new password''
mysqladmin flush-privileges
也可以使用mysql语句修改:
mysql -uroot //无密码登录到mysqld server
mysql>use mysql
mysql>update user set password=password("new_pass") where user="root";
mysql>flush privileges
重新killall MySQL ,用正常方法启动 MySQL。
2.用户授权
用户授权,方法如下:
格式:GRANT 权限列表[(字段列表)] ON 数据库名称.表名 TO 用户名@域名或 IP 地址
[IDENTIFIED BY ‘密码值’] [WITH GRANT OPTION];
常用权限如下:
全局管理权限:
FILE: 在 MySQL 服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭 MySQL 服务。
数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和 root 一样)。
USAGE: 只允许登录--其它什么也不允许做。
例一: 要授权给用户 guest 可以从任意主机连接到数据库服务器, 并具有完全访问学生
选课数据库 xsxk 的权限。
grant all on xsxk.* to guest@’%’ identified by ‘guest’;
说明:
A.%表示从任何主机连接到数据库服务器,也可以用空白
B.%.gdvcp.net 表示从 gdvcp.net 域中的任何主机连接到数据库服务器
C.192.168.85.% 表示从 192.168.85.0 子网中任何主机连接到数据库服务器
D.localhost 表示从本地主机连接
E.192.168.85.242 表示从 IP 为 192.168.85.242 的主机连接
例二:新建一个用户 tom,让他能从子网 192.168.85.0 中任何主机连接到数据库服务
器,可以读取数据库 xsxk 的内容,并且能修改表 course 中字段 teacher 的值。
grant select on xsxk.* to tom@’192.168.85.%’ identified by ‘123’;
grant update(teacher) on xsxk.course to tom@’192.168.85.%’;
例三:mysql 管理员要授权用户 admin 可以从本地连接到数据库服务器,对学生选课数
据库 xsxk 具有完全访问权限,并可将其拥有的权限授予其他用户
grant all on xsxk.* to admin@localhost identified by ‘123’ with grant option;
用户撤权,方法如下:
格式: REVOKE 权限列表[(字段列表)] ON 数据库名.表名 FROM 用户名@域名或IP地址;
例:mysql 管理员要撤销用户 admin@localhost 对数据库 xsxk 所拥有的创建删除数据
库与表的权限,并撤销该用户可以把自己拥有的权限授予其他用户的权限。
revoke create,drop on xsxk.* from admin@localhost;
revoke grant option on xsxk.* from admin@localhost;
3.允许远程登录mysql
方法一、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"
#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
方法二、直接授权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:
# mysql -u root -proot
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
操作完后切记执行以下命令刷新权限
FLUSH PRIVILEGES