mysql_istall_db说明
安装完mysql server时,一般要执行这个脚本对数据库初始化.运行这个脚本会初始化mysql的data目录,并创建那些系统表.同样也会初始化系统表空间并且关联innodb表与数据结构.
用法示例
./mysql_istall_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3306
--user
为mysqld服务的运行用户--basedir
和--datadir
则分别代表mysql的安装目录和数据存放目录
选项
help
显示帮助信息--basedir=path
mysql安装目录的路径--builddir=path
build目录的路径,用于out-of-source构建--cross-bootstrap
供内部使用--datadir=path
mysql数据目录的路径--defaults-extra-file=file_name
在读取全局选项文件和在读取用户选项文件之前,读取这个文件(选项文件),如果该文件不存在,将会抛出错误(仅限unix平台)--defaults-file=file_name
用被提供的选项文件,如果该文件不存在,将会抛出错误--force
当dns无法用时将通过ip地址代替--keep-my-cnf
在5.6.20中被添加,mysql_install_db保存任何已经存在的my.cnf文件,并且不创建新的默认my.cnf文件.--1data=path
与--datadir
同义--no-defaults
不读取任何选项文件,该选项在mysql_install_db启动时,若因为读取了未知的参数而启动失败时使用.--random-passwords
5.6.8中加入该选项,在unix平台,该选项在mysql安装时增添了更多安全性.程序会给root初始化一个随机密码.被写入.mysql_secret
文件,并且放置在对应用户的home目录下,如果.mysql_secret
文件已经存在,新密码信息会被追加上去,每一个密码都会有时间戳信息,该文件默认权限是600.并且没有匿名mysql用户存在.
通过RPM新安装mysql并使用mysql_install_db
时,将会默认调用--random-passwords
选项.在5.6.9, solaris PKG新安装并且使用mysql_install_db
时,同样也会调用--random-passwords
.
用二进制或者源码安装时,可以在使用mysql_install_db
时手动的添加--random-passwords
选项--rpm
供内部使用--skip-name-resolve
当创建授权表时,用IP地址而不是host名,这个选项在你的DNS不起作用时,非常有用.--srcdir=path
供内部使用--user=user_name
运行mysqld的系统用户名,通过mysqld创建的文件和目录的归属者将为该用户--verbose
verbose模式,打印更多关于这个程序的信息windows
供内部使用
实例
以新加一个mysql实例为例.例如服务器上已经安装了3306端口的mysql服务,需要再启一个3308端口的mysql服务.假设mysql安装在
/usr/local/mysql
路径下,找一个磁盘空间剩余比较大的盘,如/data1
, 把3308端口的mysql的数据保存在/data1
下.
mkdir /data1/mysql_3308
mkdir /data1/mysql_3308/data
chown -R mysql:mysql /data1/mysql_3308
-
复制一个mysql配置文件
my.cnf
到/data1/mysql_3308
-
修改配置文件,将端口和相关目录的都改为新的配置
vi /data1/mysql_3308/my.cnf
[client] character-set-server = utf8 port =3308 socket = /tmp/mysql_3308.sock [mysqld] user =mysql port =3308 socket = /tmp/mysql_3308.sock basedir = /usr/local/mysql datadir = /data1/mysql_3308/data log-error = /data1/mysql_3308/mysql_error.log pid-file = /data1/mysql_3308/mysql.pid ......其他略
-
确保配置文件无误,运行下面命令进行数据库的初始化
./mysql_install_db --defaults-file=/data1/mysql_3308/my.cnf --datadir=/data1/mysql_3308/data
完成新的3308数据库的初始化,如果有报错,则按照报错的提示查看报错日志,一般情况下都是my.cnf配置文件的问题,修正后即可 -
启动新mysql
- 启动3308端口的mysql服务
./mysqld_safe --defaults-file=/data1/mysql_3308/my.cnf
- 检查是否启动
ps aux | grep mysql
如果有3308字样说明已经启动成功,可将启动命令加入/etc/rc.local
随服务器启动 - 新加的mysql没有设置root密码,可以通过下面命令设置root密码:
/usr/local/mysql/bin/mysqladmin -S /tmp/mysql_3308.sock -u root password 'new password'
- 启动3308端口的mysql服务