码迷,mamicode.com
首页 > 数据库 > 详细

初始化mysql数据库

时间:2016-08-19 22:30:00      阅读:607      评论:0      收藏:0      [点我收藏+]

标签:mysql 初始化

无论你是编译安装,二进制安装,还是yum,rpm,装完mysql都是要初始化才能用.

下面来介绍下初始化安装mysql,安装前要准备好my.cnf文件噢~!怎么配置my.cnf,可以看我另一篇文章.

不过要注意的是,发行版和版本号的不同,有些参数会不同或不可用,会导致初始化失败,这时需要去初始化的数据目录查看mysql.err,看看那个参数有问题,然后屏蔽了,重新再初始化一次.

-前置步骤,已做就可以不用理会

mkdir -p /data/mysql/data
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
chown -R mysql.mysql /data/mysql/data
mkdir /data/mysql/tmp
chown -R mysql.mysql /data/mysql/tmp/

-注意:操作前要确保没有其他mysql发行版干扰,特别是yum安装的和rpm安装,

rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
rpm -e --nodeps mysql.x86_64

额外说明:--nodeps是不检查依赖,不要害怕,即使有依赖你自己的安装包都肯定有,做软连接就好了

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.18

-------------------------这条分割线上面的无论是什么版本都要做噢~!--------------------------

-5.6及之前的版本初始化步骤(包括5.6)

确保mysql进程已停

service mysql stop

确保初始化的数据目录没有数据

rm -rf /data/mysql/data*

执行初始化脚本,添加参数,切记要先编辑好my.cnf

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/data --user=mysql > /dev/null 2>&1

启动mysql

service mysql start

初始化密码

/usr/local/mysql/bin/mysqladmin -u root password ‘新密码‘

#初始化完成,尝试登陆

/usr/local/services/mysql/bin/mysql -uroot  -p‘新密码‘

------------------------------我是分割线---------------------------------

-5.7之后用新方式

确保mysql进程已停

service mysql stop

确保初始化的数据目录没有数据

rm -rf /data/mysql/data*

执行初始化命令,指定defaults-file且并必须放到最前面,切记要先编辑好my.cnf

mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize

查看初始化后的密码(密码信息在最后),5.7的初始化比较特别,会自动生成密码,不用这个密码你就不能登录,除非你进安全模式破密码,或者把参数--initialize换成--initialize-insecure,初始化后可以免密码登录.

sed -n ‘/password/p‘ /data/mysql/data/mysql.err
.....A temporary password is generated for root@localhost: GVedtgXDZ1-,

更改一下数据目录的属主权限,初始化并没有改这个属主问题,不改的话会启动不了

chown -R mysql:mysql /data/mysql/data/

启动mysql

service mysql start

密码还要初始化,虽然初始化数据库的时候已经有密码,可以直接登录,但是初始化还没真正完成,不然会报错,提示你改密码

mysql -uroot -p‘GVedtgXDZ1-,‘

还必须是下面这样改,不然改不了

mysql> alter user ‘root‘@‘localhost‘ identified by ‘123‘;
mysql> set password for ‘root‘@‘localhost‘=password(‘123‘);

这时候才算初始化完成,尝试你设定的新密码登录吧

mysql -uroot -p‘123‘

-扩展阅读:mysql 5.7增加了两个字段password_last_changed、password_lifetime来完善安全策略,可以设置参数default_password_lifetime来延长使用期限

ALTER USER ‘root‘@localhost‘ PASSWORD EXPIRE INTERVAL 90 DAYS;
ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER;
ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE DEFAULT;

---------------------------------我也是分割线-----------------------------------

初始化完了就真的完了吗?最好还是做个安全加固吧.

安全加固mysql数据库(初始化后做最佳)

删除任何无关的管理员用户和空密码的管理员用户,有需求再开

delete from mysql.user where user="root" and host!="localhost";
delete from mysql.user where user="root" and password="";
flush privileges;

删除test库,因为这个库默认是所有人都有权限读写,存在漏洞

drop database test;

删除存放数据库的表信息,因为还没有数据库信息。

delete from mysql.db;

其实5.7对安全做得比较好,上面这些做不做相差并不大,不过多做一步也更安全一些.

初始化mysql数据库

标签:mysql 初始化

原文地址:http://arthur376.blog.51cto.com/2918801/1840353

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!