一.mysql安装
1.rpm、yum安装
安装方便、安装速度快,无法定制
2.二进制
不需要安装,解压即可使用,不能定制功能
- 编译安装
3.1 可定制,安装慢
3.2 四个步骤:
3.2.1 解压(tar)
3.2.2 生成(./configure)cmake
3.2.3 编译(make)
3.2.4 安装(make install)
3.3 5.5版本之前:tar ./configure make make install
3.4 5.5版本之后:cmake gmake
-
去官网下载mysql的二进制安装包(这里我已mysql-5.6.40为例)
-
安装依赖
[root@petrus opt]# yum install -y ncurses-devel libaio-devel cmake
- 解压
[root@petrus opt]# tar xf mysql-5.6.40.tar.gz
- 创建Mysql用户
[root@petrus opt]#useradd mysql -s /sbin/nologin -M
- 生成编译文件
[root@petrus opt]# cd mysql-5.6.40
[root@petrus mysql-5.6.40]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.40 \
-DMYSQL_DATADIR=/usr/local/mysql-5.6.40/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.40/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
- 编译
[root@petrus mysql-5.6.40]# make
- 安装
[root@petrus mysql-5.6.40]# make install
- 做软连接
[root@petrus mysql-5.6.40]# ln -s /usr/local/mysql-5.6.40 /usr/local/mysql
- 拷贝配置文件
[root@petrus mysql-5.6.40]# cd support-files/
[root@petrus support-files]# cp my-default.cnf /etc/my.cnf #这个地方操作不好可能启动会报错
cp: overwrite ‘/etc/my.cnf’? y
- 拷贝启动脚本
[root@petrus support-files]# cp mysql.server /etc/init.d/mysqld
- 初始化目录
[root@petrus mysql-5.6.40]# cd scripts
[root@petrus scripts ]#./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
- 创建socket存放目录
[root@petrus support-files]# mkdir /usr/local/mysql-5.6.40/tmp
- 授权
[root@petrus support-files]# chown -R mysql.mysql /usr/local/mysql*
- 添加环境变量
[root@petrus support-files]# vim /etc/profile.d/mysql.sh
export PATH="/usr/local/mysql/bin:$PATH"
- 加载环境变量
[root@petrus support-files]# source /etc/profile
- 启动mysql
[root@petrus scripts]# /etc/init.d/mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/usr/local/mysql/data/web04.err'.
. SUCCESS!
注意:'/usr/local/mysql/data/web04.err'. 这是mysql的错误日志
- 进入mysql
[root@petrus scripts]# mysql
-bash: mysql: command not found
报错解决方案:因为没有添加mysql这个命令的环境变量(/usr/local/mysql/bin/mysql环境变量所在目录)
[root@petrus scripts]# vim /etc/profile.d/mysql.sh
export PATH="/usr/local/mysql/bin:$PATH" #加上这一句
给mysql设置开机自启动:
- [root@petrus ~]# vim /usr/lib/systemd/system/mysqld.service
添加以下内容:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf #检查/usr/local/mysql/bin/mysqld 是否有启动脚本,没有的话填写mysqld所在的路径
LimitNOFILE = 5000
-
[root@petrus ~]# /etc/init.d/mysqld stop
-
[root@petrus ~]# systemctl start mysqld 或者[root@web04 ~]# systemctl daemon-reload
-
[root@petrus ~]# systemctl enable mysqld
解决MySQL误删除root用户步骤:
-
停库
[root@elk01 scripts]# /etc/init.d/mysqld stop -
跳过授权表,网络 启动
[root@elk01 scripts]# mysqld_safe --skip-grant-tables(跳过授权表) --skip-networking(禁止用TCP/IP远程连接) &
bg :将当前mysql进程放在后台
ctrl+Z :也是放在后台执行,但是只限当前终端
- 连接数据库
[root@elk01 ~]# mysql
- 刷新系统授权表
mysql> flush privileges;
- 创建用户(允许远程连接)
mysql> grant all on *.* to root@'%' identified by '123' with grant option;
- 重启MySQL
[root@elk01 ~]# /etc/init.d/mysqld restart
- 在没有密码的情况下给MySQL设置密码:
[root@elk01 ~]# mysqladmin -uroot -p password '123'
**注意:**在启动mysqld的时候可能会出现如下错误
原因说明:可能做二进制的时候少了拷贝默认配置文件的步骤,
系统本身会自带一份配置文件,但这个配置文件是mariadb 的, centos7系统使用yum install 装数据库的时候,装的是mariadb的,不是mysql,所以但我们启动mysqld的时候,会往mariadb/var/log/mariadb.log/写文件,但是这个文件又是不存在的,所以会报错,
mysqld服务启动找不到PID文件,只有服务启动会生成这个pid文件,文件记录的是当前进程的pid号,
可以进去查看:[root@web04 ~]# tail -100 /usr/local/mysql/data/web04.err
解决方案:https://blog.csdn.net/yushaolong1234/article/details/81741294
解决方案:拷贝mysql默认配置文件
[root@petrus opt]# cd /usr/local/mysql-5.6.40/
[root@petrus mysql-5.6.40]# cd support-files/
[root@petrus support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
二.多实例安装
参照:
https://www.driverzeng.com/zenglaoshi/644.html#toc_4