一步到位Linux中安装配置MySQL及补坑
Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现不少问题,所以在此列出以作防坑指南。
至于Mysql是什么,能做什么那就不用介绍了,主要讲安装。
环境
CentOS7.0
Mysql-5.7.17
用root用户安装
关闭防火墙或让涉及到的端口通过。
-A INPUT -m state --state NEW -m tcp -p tcp --sport 3306 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
然后执行下面命令,使防火墙立即生效。
service iptables restart
下载
去官网下载 :http://dev.mysql.com/downloads/mysql/
下载后放进CentOS中的/usr/local/ 文件夹中,并解压到当前文件中 /usr/local/mysql,Mysql有很多版本,没选对可能也会出现各种问题。
准备系统帐户
groupadd mysql #添加用户组
useradd -r -g mysql -s /bin/false mysql #添加mysql用户
安装
进入/usr/local文件夹解压mysql到当前文件夹:
cd /usr/local
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
重命名为mysql
mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql
配置相关的启动配置文件
1、复制my.cnf 到 /etc/my.cnf (mysqld启动时自动读取)
cp my-default.cnf /etc/my.cnf
如果"/etc/"目录下没有my.cnf配置文件,请到"/usr/share/mysql/"下找到*.cnf文件,拷贝其中一个合适的配置文件到"/etc/"并改名为"my.cnf"中。命令如下:
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
2、解决一下乱码问题 vi /etc/my.cnf [mysql] default-character-set=utf8 [mysqld] default-storage-engine=INNODB character_set_server=utf8
[client]
#password = your_password
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set=utf8
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
datadir=/usr/local/mysql/data
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
3、复制mysql.server 到/etc/init.d/ 目录下【目的想实现mysqld -install这样开机自动执行效果】 【/etc/init.d/ 目录,等效于注册表HKEY_LOCAL_MACHINESYSTEMControlSet001services 记录有哪些服务】
cp mysql.server /etc/init.d/mysql (mysql是服务名)
4、修改 /etc/init.d/mysql 参数 vi /etc/init.d/mysql 给与2个目录位置
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
4、给目录/usr/local/mysql 更改拥有者
chown -R mysql:mysql /usr/local/mysql
在/etc/profile里面在文件末尾添添加一个路径
初始化 mysql 的数据库
mysql_install_db (老版本的做法) 新版本:
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
生成出一个data目录,代表数据库已经初始化成功
启动mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql
检查ps -ef|grep mysql
再给超级管理员上密码:root
bin/mysqladmin -u root password 'root'
授权远程访问
mysql>grant all privileges on *.* to root@'%' identified by 'root';
mysql>flush privileges;
进入客户端
登录 mysql -u root -p
输入密码
扩展
mysql 下有好几个结尾为cnf的文件,它们的作用分别是。
a、my-small.cnf:是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。 b、my-medium.cnf:是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。 c、my-large.cnf:是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。 d、my-huge.cnf:是为企业中的数据库而设计的。这样的数据库要求专用服务器和1GB或1GB以上的RAM。 这些选择高度依赖于内存的数量、计算机的运算速度、数据库的细节大小、访问数据库的用户数量以及在数据库中装入并访问数据的用户数量。随着数据库和用户的不断增加,数据库的性能可能会发生变化。 备注:这里我们根据实际情况,选择了"my-medium.cnf"进行配置。
删除空用户,增强安全 目前为止我们都是以"root"的身份进行的,但是当我们切换至普通用户登录MySQL时,直接输入"mysql"就进去了,我们刚才不是设置密码了吗?怎么就失效了呢?说明有空用户存在。先用命令"exit"退出,在按照下面命令进行修正。
解决步骤如下: 以MySQL用户"root"用密码形式登录。 mysql -u root -p 删除空用户,强烈建议。 mysql>delete from mysql.user where user=''; 刷新权限表,以便可以使更改立即生效。 mysql>flush privileges; 输入"exit",退出MySQL。 mysql>exit 再重新以"mysql"登录测试 mysql 发现以"mysql"登录已经失效,必须以"mysql –u root -p"才能登录。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP使用反向Ajax技术实现在线客服系统详解
- PHP设计模式之适配器模式(Adapter)原理与用法详解
- laravel5.5框架的上传图片功能实例分析【仅传到服务器端】
- Laravel5.1框架自带权限控制系统 ACL用法分析
- php使用filter_var函数判断邮箱,url,ip格式示例
- Python json格式化打印实现过程解析
- PHP使用DOM对XML解析处理操作示例
- OpenCV Python实现图像指定区域裁剪
- Laravel框架实现多个视图共享相同数据的方法详解
- python如何快速生成时间戳
- 从python读取sql的实例方法
- PHP+iframe模拟Ajax上传文件功能示例
- Centos7 Yum安装PHP7.2流程教程详解
- PHP session垃圾回收机制实例分析
- thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例