- 下载Linux_Generic下mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
- 创建安装目录、数据目录、用户和组
groupadd mysql
useradd -g mysql mysql
mkdir /usr/local/mysql
# 数据目录
mkdir /var/lib/mysql
- 解压并移动安装文件到安装目录
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.22-linux-glibc2.12-x86_64/* /usr/local/mysql
- 初始化数据
# 旧版本使用
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/var/lib/mysql/
# 报错使用mysqld
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/var/lib/mysql/
- 修改用户和属组
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql
- 创建my.cnf
# 配置一些基础项
[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
log-error=mysqld.log
pid-file=mysqld.pid
character-set-server=utf8
server_id=2
log_bin=mysql-bin
binlog_format=ROW
log_slave_updates=1
[mysqld_safe]
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
- 修改移动server文件启动数据库
打开support-files/mysql.server
修改其中变量
basedir=/usr/local/mysql
datadir=/var/lib/mysql
cp -af ./support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
- 创建软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe
ln -s /usr/local/mysql/bin/mysqld /usr/sbin/mysqld
- 登录数据库修改密码
初始化数据的时候会有密码打印
如果没有 cat /root/.mysql_secret
或者 grep "password" /var/log/mysqld.log
获取到密码登录数据库修改密码
set password=password('your password');
如果修改失败 ALTER USER 'root'@'%' IDENTIFIED BY 'your password';
其他:
- 实在找不到密码或者忘记密码
在my.cnf的[mysqld]下添加参数免密登录
skip-grant-tables
登录后修改密码
如果修改密码失败(特别是mysql8.0)
use mysql;
update user set authentication_string='' where user='root';
将root密码重置为空,将免密登录的skip-grant-tables注释掉,重启数据库
再登录修改密码:
ALTER USER 'root'@'%' IDENTIFIED BY 'your password';
或者 update mysql.user set authentication_string=password("your password") where user="root";
也可以 /usr/bin/mysqladmin -u root password 'new password'
可能 SET PASSWORD FOR 'root'@'%' = PASSWORD('your password');
- 如果root无法远程连接数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'eisoo.com123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果上述步骤报错了:
CREATE USER 'root'@'%' IDENTIFIED BY 'your password';
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
其他账户同理
- 不想设置太高强度的密码
set global validate_password_policy=LOW;
set global validate_password_length=1;
- 查看root账户权限
SHOW GRANTS FOR 'root'@'%';
- binlog日志太多了,删除日志
PURGE BINARY LOGS TO mysql-bin.000005