安装和配置过程如下:
【1】centos下安装MySQL路径
[root@sample ~]# cd ~ ← 切换到主目录进行安装
centos下安装MySQL
[root@sample ~]# yum -y install mysql-server ← 安装MySQL
【2】配置MySQL
[root@sample ~]# vi /etc/my.cnf ← 编辑MySQL的配置文件
old_passwords=1
← 找到这一行,在这一行的下面添加新的规则,让MySQL的默认编码为UTF-8(假若找不到,就在本文件到底添加)
default-character-set = utf8 ← 添加这一行
【3】启动MySQL服务
[root@sample ~]# chkconfig mysqld on ← 设置MySQL服务随系统启动自启动
[root@sample ~]# chkconfig --list mysqld ← 确认MySQL自启动
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 如果2--5为on的状态就OK
[root@sample ~]# service mysqld start ← 启动MySQL服务
【4】MySQL 初始化环境变量
4.1, 给MySQL的用户root设置密码
MySQL在刚刚被安装的时候,它的root用户是没有被设置密码的。首先来设置MySQL的root密码
[root@sample ~]# mysql -u root ← 用户root登录MySQL服务器
mysql> select user,host,password from mysql.user; ← 查看用户信息
mysql> set password for root@localhost=password('在这里填入root密码'); ← 设置root密码
mysql> set password for root@'sample.centospublic.com'=password('在这里填入root密码'); ← 设置root密码
mysql> select user,host,password from mysql.user; ← 查看用户信息
mysql> exit ← 退出MySQL服务器
4.2, 删除匿名用户
在MySQL刚刚被安装后,存在用户名、密码为空的用户。这使得数据库服务器有无需密码被登录的可能性。为消除隐患,将匿名用户删除。
mysql -u root -p ← 通过密码用root登录
select user,host from mysql.user; ← 查看用户信息
delete from mysql.user where user=''; ← 删除匿名用户
select user,host from mysql.user; ← 查看用户信息
exit ← 退出MySQL服务器
4.3, 删除测试用数据库 在MySQL被安装后,存在名为test的空数据库,将它删除。这里要注意的是,系统默认的还有一个名为mysql的数据库,它用于系统管理,所以请不要删除。
mysql -u root -p ← 通过密码用root登录
show databases; ← 查看系统已存在的数据库
drop database test; ← 删除名为test的空数据库
show databases; ← 查看系统已存在的数据库
exit ← 退出MySQL服务器
【5】 测试MySQL
下面对MySQL进行测试。包括建立新用户,以及用对关系性数据库进行数据库操作的指令来试着建立数据库及数据表。这里,新建用户以centospub为例。
mysql -u root -p ← 通过密码用root登录
grant all privileges on test.* to centospublic@localhost identified by '在这里定义密码';
← 建立对test数据库有完全操作权限的名为centospub的用户
select user from mysql.user where user='centospublic';← 确认centospub用户的存在与否
exit ← 退出MySQL服务器
mysql -u centospublic -p ← 用新建立的centospub用户登录MySQL服务器
create database test; ← 建立名为test的数据库
show databases; ← 查看系统已存在的数据库
use test; ← 连接到数据库
create table test(num int, name varchar(50)); ← 在数据库中建立表
insert into test values(1,'Hello World!'); ← 插入一个值到表中
select * from test; ← 查看数据库中的表的信息
update test set name='Hello Everyone!'; ← 更新表的信息,赋予新的值
select * from test; ← 查看数据库中的表的信息
delete from test where num=1; ← 删除表内的值
select * from test; ← 确认删除结果
drop table test; ← 删除表
show tables; ← 查看表信息
drop database test; ← 删除名为test的数据库
show databases; ← 查看已存在的数据库
exit ← 退出MySQL服务器
删除测试用过的遗留用户。
mysql -u root -p ← 通过密码用root登录
revoke all privileges on *.* from centospublic@localhost; ← 取消centospub用户对数据库的操作权限
delete from mysql.user where user='centospublic' and host='localhost'; ← 删除centospub用户
select user from mysql.user where user='centospublic'; ← 查找用户centospub,确认已删除与否
flush privileges; ← 刷新,使以上操作生效
exit ← 退出MySQL服务器
【6】centos下 远程登录MySQL配置
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:
1、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
2、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
3、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:
在本机先使用root用户登录mysql:。。。
进行授权操作:
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
4、删除用户授权,需要使用REVOKE命令,具体命令格式为:
REVOKE privileges ON 数据库[.表名] FROM user-name;
具体实例,先在本机登录mysql: mysql -u root -p"youpassword"
进行授权操作:
GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword";
再进行删除授权操作:
REVOKE all on TEST-DB from test-user;
//注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。
最后从用户表内清除用户:
DELETE FROM user WHERE user="test-user";
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
5、MYSQL权限详细分类:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。