MySQL安装

1. 处理安装包
将安装包放在/usr/local/src/目录下,并解压,得到原始目录mysql-VERSION-OS
命令:tar -xavf mysql-VERSION-OS.tar.gz

2. 安装目录
在/usr/local/目录下创建符号链接mysql,指向解压后的原始目录mysql-VERSION-OS,方便以后通过/usr/local/mysql引用MySQL
命令:ln -s /usr/local/src/mysql-VERSION-OS mysql

3. 创建用户和组
创建用于运行mysqld的默认用户和默认组,通常为mysql : mysql
命令:
groupadd mysql
useradd -g mysql mysql 

4. 清理配置文件
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
按上述顺序依次查看配置文件是否已经存在,若存在,则删除,防止原有配置文件对安装造成干扰。我们使用默认配置

5. 初始化数据目录
进入安装目录,即/usr/local/mysql
① 为保证用户mysql能在安装目录下成功创建数据目录,现将安装目录及该目录下的文件和子目录的属主和属组都设置为用户mysql和组mysql
命令:chown -R  mysql:mysql .

② 执行scripts子目录下的初始化脚本
命令:scripts/mysql_install_db --user=mysql
这将为MySQL生成数据目录data,它位于安装目录/usr/local/mysql中

③ 现在可以将安装目录的属主更改为root,但数据目录的属主必须为mysql
命令:
chown -R root .
chown -R mysql data

6. 启动服务器
以用户mysql的身份,运行服务器
命令:bin/mysqld_safe --user=mysql &
说明:
◇ 如果启动失败,打印"mysqld ended",请到数据目录(/usr/local/mysql/data)中查看错误日志host_name.err或host_name.log,host_name为本地主机名
◇ mysqld启动后,会将数据目录设置为进程的当前工作目录,服务器将在该目录下查找数据库、写各种日志文件以及PID文件
◇ mysqld默认运行端口为3306。要指定其它端口,可以在mysqld_safe命令中使用「--port」选项,例如:
   bin/mysqld_safe --user=mysql --port=13306 &

7. 测试服务器
① 使用mysqladmin,验证服务器运行正常,连接正常
命令:bin/mysqladmin version

② 使用mysqlshow和mysql,验证从服务器获取数据正常
△ 显示数据库
bin/mysqlshow
△ 显示数据库mysql中的表
bin/mysqlshow mysql
△ 从表中获取数据
bin/mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql

8. 账户安全
MySQL的初始用户有两个:root和匿名用户(用户名为空字符串),且两者密码均为空。通过查询mysql库中的user表可以查看用户信息:


另一方面,mysql库中的db表,允许任何用户,从任何主机,访问test库和所有以test_作为前缀的库,且操作权限很大:


因此,现阶段服务器存在三个安全隐患:
① root账号密码为空
② 存在匿名账号
③ test库可能被非法访问

◇ 设置root密码
bin/mysql -e "update user set Password = password('some_pass') where User = 'root'; flush privileges;" mysql
注:flush privileges使服务器重新加载权限表,否则修改的密码只有等服务器下次重启才能生效

◇ 删除匿名账号
匿名账号的存在会妨碍其它账号的本地访问,假设存在如下账号
"rongxj"@"%"
则该账号本地访问MySQL时,匹配的将是""@"localhost",而非"rongxj"@"%",从而导致账号权限问题,解决方法:
删除全部匿名账号
bin/mysql -e "delete from user where User = ''; flush privileges;" mysql

◇ 修改db表
删除所有账号对test数据库的访问
bin/mysql -e "delete from db where Db like 'test%'; flush privileges;" mysql
或者可以考虑直接删除test数据库
bin/mysql -e "drop database test" mysql

9. 设置外网访问 
当前所有账号的「Host」字段均为「localhost「127.0.0.1「::1」,故MySQL只能本地登录
若需外网访问,可新建账号,重设「Host」字段的值:
create user "root"@"%" identified by "some_pass";
grant all privileges on *.* to "root"@"%";

10. 设置PATH
将/usr/local/mysql/bin加入PATH环境变量,方便运行mysql的命令和工具:
在/etc/profile.d/目录下,新建文件mine.sh,内容为:PATH=/usr/local/mysql/bin:$PATH

posted on 2017-10-21 20:51  柴科夫斯不是基  阅读(103)  评论(0编辑  收藏  举报

导航