首先 mysql5.7是目前的主流稳定版本,下载地址可以参考官网下载 --- > 官网下载点我
笔记为markdown模式,博客园不太兼容,详细内容参考 --- 有道云笔记点我
mysql的安装方式:
1.yum 安装 :安装方便、安装速度快,无法定制
2.通用安装(二进制):不需要安装,解压即可使用,不能定制功能
3.编译安装:可定制,安装慢。
注意:
5.5之前:./configure make make install
5.5之后:cmake gmake
4.先编译,然后制作rpm,制作yum库,然后yum安装。
简单、速度快、可定制,比较复杂,制作时间长
二进制安装
mysql 5.7编译安装
环境准备:
[root@db01 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@db01 ~]# uname -a
Linux db01 3.10.0-862.el7.x86_64
1. 下载
mkdir /server/tools -p 创建工具目录
下载带有boost的mysql-5.7.20(默认版本为1.59版本)
官方自带(boost版本mysql)--->推荐使用mysql官方版本
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
tar xf mysql-boost-5.7.20.tar.gz 解压下载之后的包
2. 安装依赖包
源码安装mysql需要依赖 cmake boost
yuminstall -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
3. 创建关键目录
mkdir /usr/local/mysql mkdir /usr/local/mysql/mydata mkdir /usr/local/mysql/conf useradd mysql chown -R mysql:mysql /usr/local/mysql*
4. cmake进行预编译
cd mysql-5.7.20/ 切换进目录再进行如下操作
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/mydata -DSYSCONFDIR=/usr/local/mysql/conf -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql1/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
注意:
-DWITH_SYSTEMD=1 //是否支持sysytemd方式管理mysql -DDOWNLOAD_BOOST=1 //自动下载boost软件支持 -DWITH_BOOST=./boost //本地boost目录 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安装路径 -DMYSQL_DATADIR=/usr/local/mysql/mydata #数据路径 -DSYSCONFDIR=/usr/local/mysql/conf #配置文件 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 #管理用户 -DWITH_INNOBASE_STORAGE_ENGINE=1 #是否开启存储引擎支持 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock #套接字文件 -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all #端口号 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci #默认字符集和校对规则 -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled #是否支持SSL -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
5. 进行编译安装
make && make install :等待时间较长
安装完成后:
执行echo $? 查看是否成功
初始化数据:初始化管理员密码为空
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql/mydata --basedir=/usr/local/mysql
书写基础配置文件
vim /etc/my.cnf
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/mydata socket=/tmp/mysql.sock log_error=/var/log/mysql.log user=mysql [client] socket=/tmp/mysql.sock
启动mysql
touch /var/log/mysql.log chown -R mysql.mysql /var/log/mysql.log cd /usr/local/mysql/support-files //切换到启动目录 vim mysql.server 替换所有 mysqld_safe 为 mysqld 方法:#s#mysqld_safe#mysqld#g ./mysql.server start //启动Mysql
检查端口是否开启
编译安装 -> 优化
使用systemctl启动
注意:如果之前用其它方式开启过,请先关闭,之后在用如下方式启动。
vim /etc/systemd/system/mysqld.service [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://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 LimitNOFILE = 5000
使用systemcrl status mysqld 查看
环境变量设置(无密码登录)
tail -1 /etc/profile export PATH=/usr/local/mysql/bin:$PATH source /etc/profile //生效 mysql //直接使用mysql登录
将密码改为空
update mysql.user set authentication_string=PASSWORD('') where user='root' and host='localhost'; flush privileges; //立即生效 或者重启数据库也会生效。 注意: mysql.user 在每次数据库启动时会自动加载到内存,如果使用update语句直接修改表内容,mysql不会立即将变化更新内存,需要手工触发。
设置密码登录
[root@oldboy ~]# mysqladmin password New password: //新密码 Confirm new password: //再次输入 Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. //警告 [root@oldboy ~]# mysql -uroot -p123 //使用密码登录
已有密码,重设密码
[root@oldboy ~]# mysqladmin -uroot -p password Enter password: //老密码 New password: //新密码 Confirm new password: //再次输入 Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
忘记密码怎么办?
--skip-grant-tables ----> 跳过授权表(mysql.user) --skip-networking ----> 跳过网络用户连接 如何使用? (1) 停数据库 systemctl stop mysqld (2)跳过授权表启动数据库 mysqld --skip-grant-tables --skip-networking & //加 & 是后台运行 然后可以用 mysql 就可以无密码登录 (3)修改密码 update mysql.user set authentication_string=PASSWORD('123456') where user='root' and host='localhost'; (4)停库,然后正常启动 mysqladmin shutdown systemctl start mysqld [root@oldboy ~]# mysql -uroot -p123456 // 可以用新密码登录