历史版本: https://downloads.mysql.com/archives/community/
mysql安装准备:
1. 加大虚拟机内存,1~2G,编译时候更快
2. 提前下好软件
3. 重视操作过程报错输出
4. 进入虚拟机中make 和 make install , 以免前功尽弃
如何安装?
1. 创建mysql用户
useradd mysql -s /sbin/nologin -M id mysql # 检查
2. 下载
版本选择:
# mysql 5.5 占用60%
# 5.5下载地址:https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.58.tar.gz
# mysql 5.6+ 占用20%
# 5.6下载地址: https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.38.tar.gz
# 5.1下载地址: https://cdn.mysql.com/archives/mysql-5.1/mysql-5.1.72.tar.gz
选择5.5版本
统一下载到家目录下 tools目录中
cd ~/tools wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.38.tar.gz tar -xf mysql-5.5.tar.gz # 解压 cd mysql-5.5 # 进入解压源码目录 yum install -y cmake ncurses-devel gcc-c++ openssl-devel ncurses-devel # 这5.5 和5.6两个版本需要通过cmake进行安装,并安装相关依赖
# 可以通过 make -j 4,-j指定cpu的核数,加快编译过程,如果使用不当还会减慢安装速度
安装5.5相关参数:
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.58 -DMYSQL_DATADIR=/application/mysql-5.5.58/data -DMYSQL_UNIX_ADDR=/application/mysql-5.5.58/mysql.sock -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_SSL=yes -DENABLED_LOCAL_INFILE=1 -DWITH_ZLIB=bundled -DWITH_READLINE=1 # 生产环境确定字符集为utf-8,那就添加这两句 # -DDEFAULT_CHARSET=utf8 # -DDEFAULT_COLLATION=utf8_general_ci \
3. 编译并安装
make && make install
4. 创建软链接
ln -s mysql-5.5.58/ mysql # 做一个软链接 # 假如数据库没有和web服务放在一起,配置到此结束,和web服务放在一起,继续往下配置
5. 选择配置文件
cd到 原码文件目录下, ll support-files/ | grep "my.*.cnf$" # 有5个初始配置模板
# # 这5个文件,应用场景不同,对应级别硬件配置,硬件配置越高,选择默认模版越大 虚拟机使用 my-small.cnf: cp support-files/my-small.cnf /etc/my.cnf # 把这个配置文件拷贝到/etc目录下,覆盖
6. 创建放数据库数据文件目录
mkdir /application/mysql/data -p # 创建data存放数据的目录,实质上编译的时候,就指定了目录,会创建一个数据目录
7. 授权mysql用户管理
chown -R mysql.mysql /application/mysql/ # 授权mysql安装目录给mysql用户管理,注意后面的 / 没有斜杠单独这个软链接授权,加上这个斜杠表示该目录和目录下所有内容授权
8. 初始化数据库
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql # 初始化数据库,将会在 /application/mysql/data/ 目录生成mysql库和performance_schema配置库 # --basedir 安装目录 # --datadir 存放数据目录 # --user 服务运行用户
9. 配置mysql数据库服务启动脚本
# 从源码文件中的support-files/目录下,拷贝mysql启动脚本mysql.server到/etc/init.d/目录下 cp support-files/mysql.server /etc/init.d/mysqld # 拷贝到 /etc/init.d/ 启动目录下,然后就可以通过 /etc/init.d/mysqld start启动数据库 vim /etc/init.d/mysqld # 编辑这个脚本,更改以下两个参数 basedir=/application/mysql/ # 指定安装路径 datadir=/application/mysql/data/ # 指定数据路径 chkconfig --add mysqld # 添加到 chkconfig 管理 chmod u+x /etc/init.d/mysqld # 授权,执行权 chkconfig mysqld on # 让其开机自启动
10. 启动msyql服务
/etc/init.d/mysqld start
如何直接输入mysql进入mysql数据库?
常规启动 /application/mysql/bin/mysql, 全路径启动
1. 把mysql命令添加到环境变量中
vim /etc/profile # 最后一行加入一行: export PATH="/application/mysql/bin/:$PATH" . /etc/profile # 让修改生效 # echo ‘export PATH="/application/mysql/bin/:$PATH"‘ >> /etc/profile
启动数据库出现的错误:
ERROR! MySQL server PID file could not be found!
原因可能是:启动脚本中有两个参数未指定
vim /etc/init.d/mysqld # 编辑这个脚本,指定两个路径, basedir=/application/mysql/ # 指定安装路径 datadir=/application/mysql/data # 指定数据路径 # 如果修改了这两个参数,还是报这个错误,直接删除 /data 数据目录,重新做数据库初始化,也就是重新执行 mysql_install_db 命令,然后提示有两种启动方式,两者不要混用,不然就会报这个错误
2. ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/application/mysql-5.5.58/mysql.sock‘ (2)
原因: /etc/my.cnf 配置文件问题
解决方法:
从源码文件中把 my-small.cnf 文件拷贝覆盖掉 my.cnf文件
3. Starting MySQL.. ERROR! The server quit without updating PID file (/application/mysql/data//db01.pid)
这个问题是无法创建 PID file ,也就是数据没有权限,那么需要把msyql这个安装目录全部授权给msyql用户管理
4. 171215 22:35:46 mysqld_safe mysqld from pid file /application/mysql/data/web01.pid ended
这个问题的原因是:
没有把安装目录授权给mysql用户,当我授权的时候,只是给对应的软链接进行了mysql用户授权
命令后少了个斜杠,毕竟软链接也是文件,没有授权通过mysql_install_db并不能创建msyql.sock文件,所以启动服务失败
如何解决?
ll /application/mysql/ # 检查软件授权情况,看主和组是否是mysql
chown -R mysql:mysql /application/mysql/ # 特别注意软链接后面那个斜杠
安装初始化的数据库默认没有密码,可以直接执行mysql命令执行,那如何给初始化密码?
mysqladmin -u root password ‘password‘ # 设置密码 mysql -u root -p # 输入密码直接进入,显示公开的数据信息
对数据库设置了密码,还需要进行哪些操作?
select user,host from mysql.user #查看用户信息把空白信息删除掉 drop user ""@localhost; drop user ""@web01; #这两行空参数,要适合指定的机器,不同机器两行参数名字不一样 select user,host from mysql.user; # 检查 drop database test; # 删除test测试数据库,这个数据库不安全
如何查看数据库相关信息?
select version(); # 查看当前版本 select user(); # 查看当前用户 select user, host from mysql.user # 查看用户信息,需要把空的删掉