网上下载适合版本的MySQL安装包,当前以MySQL-5.7.34为例
安装必需包
yum -y install gcc
解压
tar -zxvf mysql.tar.gz
解压后,将文件夹重命名为mysql
移动mysql文件夹至/usr/local/下
添加用户组
/usr/sbin/groupadd mysql
添加新用户
/usr/sbin/useradd -g mysql mysql
创建相关的目录
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
会生成一个root 的 随机密码,请务必先记录一下。如果忘记了,请查看 ( /usr/local/mysql/logs/mysqld.log )
对相应的目录增加权限
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chmod +w /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
echo 'basedir=/usr/local/mysql/' >> /etc/init.d/mysqld
echo 'datadir=/usr/local/mysql/data' >>/etc/init.d/mysqld
service mysqld start
如果服务不能正常启动,则可以尝试删除掉data目录和/tmp/mysql.sock和/var/lib/mysql/mysql.sock文件,重试即可。
//重置密码,直接使用生成的密码登录即可。
/usr/local/mysql/bin/mysql_secure_installation -uroot -p
新的版本中,通过上述语句,就可以初始化MySQL,并且生成随机密码。
下面的语句适用于老版本安装,新版本的MySQL已经加入了密码安全级别,不允许这样操作了。
mysqld_safe --skip-grant-tables &
mysql -uroot -p
use mysql;
update user set authentication_string=password('root') where user='root';
exit;
重启mysqld
加端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
开启远程:
update user set host = '%' where user = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
设置密码不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
如果提示:ERROR 1820 (HY000):You must Set PASSWORD before....
则可以直接执行
mysql>set password=password('root');
重置密码
以下安装方法为早期安装包,但最新的MySQL包中基本都自带了boost
MYSQL包含Boost和不包含Boost版本
建议找到包含boost版本。
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/binlog
mkdir -p /usr/local/mysql/logs
mkdir -p /usr/local/mysql/relaylog
mkdir -p /var/lib/mysql
mkdir -p /usr/local/mysql/etc
在此之前还需要安装boost.tar.gz
可以从网上下载最新版本boost-1.59.0.tar.gz
tar xzf boost_1_59_0.tar.gz
cd boost_1_59_0
mv boost_1_59_0 boost
mv boost /usr/local
之后下载mysql.tar.gz,最新版本mysql-5.7.10.tar.gz
tar -zxvf mysql-5.7.10.tar.gz
cd mysql-5.7.10
cmake -DCMAKE_INSTALL_PREFIX="/usr/local/mysql" -DDEFAULT_CHARSET=utf8 -DMYSQL_DATADIR="/usr/local/mysql/data/" -DCMAKE_INSTALL_PREFIX="/usr/local/mysql" -DINSTALL_PLUGINDIR=plugin -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_COLLATION=utf8_general_ci -DENABLE_DEBUG_SYNC=0 -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=1 -DWITH_ZLIB=system -DWITH_EXTRA_CHARSETS=none -DMYSQL_MAINTAINER_MODE=OFF -DEXTRA_CHARSETS=all -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_BOOST=/usr/local/boost
make -j `cat /proc/cpuinfo | grep processor| wc -l`
make install
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqld /usr/bin/mysqld
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -s /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe
rm -rf /etc/my.cnf
进入mysql安装源下的support-files目录
cp my-default.cnf /usr/local/mysql/etc/my.cnf
cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
会生成一个root 的 随机密码,请务必先记录一下。如果忘记了,请查看 ( /usr/local/mysql/logs/mysqld.log )
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chmod +w /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
echo 'basedir=/usr/local/mysql/' >> /etc/init.d/mysqld
echo 'datadir=/usr/local/mysql/data' >>/etc/init.d/mysqld
service mysqld start
/usr/local/mysql/bin/mysql_secure_installation -uroot -p
//重置密码:
mysqld_safe --skip-grant-tables &
mysql -uroot -p
use mysql;
update user set authentication_string=password('root') where user='root';
exit;
重启mysqld
加端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
开启远程:
update user set host = '%' where user = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION
FLUSH PRIVILEGES
MySQL8以上的授权方式如下:
grant all on *.* to root@'%' with grant option
同时第一次登录时修改密码的方式如下:
mysql>set password='root';
其中root为新密码。
设置密码不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
如果提示:ERROR 1820 (HY000):You must Set PASSWORD before....
则可以直接执行
mysql>set password=password('root');
重置密码