添加mysql用户,不让该用户登录,也没有主目录
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
解压mysql二进制文件,并移动到/usr/local/mysql目录中,并将该目录的用户和组变为mysql
tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
初始化MySQL数据库,5.7版本是使用的是mysqld工具初始化MySQL数据库,--datadir
选项表示mysql数据库文件存放的位置。初始化完成后,会给一个root用户的临时密码。设置--datadir=/usr/local/mysql/data
时,我的二进制包中已有该目录,所以要删掉rm -rf /usr/local/mysql/data
。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
# mysql root的临时密码
# A temporary password is generated for root@localhost: acq:l-Mr?4d?
启动Mysql
/usr/local/mysql/support-files/mysql.server start
# root用户登录
/usr/local/mysql/bin/mysql -uroot -p
我在登录时,遇到root密码过期的情况,解决办法为,将/usr/local/mysql/support-files/my-default.cnf文件拷贝到/etc目录中,并改名为my.cnf。编辑my.cnf添加skip-grant-tables
参数,然mysql在启动时跳过授权表,这样就可以免密登录mysql了
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
#添加 skip-grant-tables 参数
重启MySQL后,可以免密登录
/usr/local/mysql/support-files/mysql.server restart
/usr/local/mysql/bin/mysql -uroot
修改root用户的密码(这里是6个a),密码为不过期。
use mysql;
update user set authentication_string=password('aaaaaa'), password_expired='N' where user='root';
flush privileges;
如果临时密码没有过期,登录后需要修改root密码:
alter user user() identified by "aaaaaa";
修改密码完成后,将/etc/my.cnf
文件中的ship-grant-tables
参数取消。然后重启mysql。
为了便于启动,可以做以下的连接,将support-files/mysql.server
连接到/etc/init.d
目录中,这样就可以使用server mysql start|stop|restart
来管理MySQL服务。
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
如果,mysql没有添加到/usr/bin/
目录中,可以手动的将mysql/bin/mysql
连接到/usr/bin/mysql
,这样可以在命令行快速的启动MySQL客户端。这里要注意,做连接的时候需要使用全路径。
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql