第一步:
下载MySQL安装包,可以在官网直接下载,然后通过工具上传到服务器;
也可以在服务器上面使用命令下载,进入/usr/local目录,命令如下。
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
第二步:解压,并重命名为mysql。
tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
第三步:创建mysql用户和用户组。
groupadd mysql
useradd -r -g mysql mysql
第四步:创建数据文件夹和日志文件夹及对应的文件。
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/logs
第五步:在/usr/local/mysql/logs目录下,创建日志文件和pid文件。
touch mysqld.log
touch mysqld.pid
第六步:重点在这里,授权,在/usr/local目录下,执行授权。如果不授权,在启动MySQL服务时会提示找不到pid等文件,其实问题就在于权限的缺失。
chown -R mysql:mysql mysql/
chmod -R 755 mysql/
第七步:安装并初始化,指定数据库所属用户和数据目录、基础目录。由于指定用户为mysql,所有第六步尤为重要。
在初始化之后,命令行里面会有一个初始密码,一定要记住,一会登录MySQL需要用。
注意:执行下面命令之前去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
第八步:进入/usr/local/mysql目录,复制启动脚本到资源目录并授权,然后将mysqld服务添加到系统服务。
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
第九步:将mysql命令添加到/usr/bin目录,方便后期在服务器上面登录数据可以可以直接使用mysql -uroot -p命令。
ln -s /usr/local/mysql/bin/mysql /usr/bin
到此,数据库的安装就结束了,可以正常使用命令去访问并修改密码,初始密码即为第七步生成的一个字符串。
service mysql start mysql -uroot -p ALTER USER `root`@`localhost` IDENTIFIED BY 'newpassword';
flush privileges;
开启远程连接。
update user set host="%" where user="root";
flush privileges;
默认安装下,没有用到my.cnf配置文件,所以第四步和第五步中创建的logs文件夹和mysqld.log、mysqld.pid文件就没有用到。
但是在很多情况下都需要配置一下mysql,比如日志文件、pid文件、库表不区分大小写等等,这时候第四和第五步中的配置就起作用了。
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-name-resolve
user = mysql
lower_case_table_names=1
default-storage-engine = InnoDB
explicit_defaults_for_timestamp = TRUE
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#innodb_data_file_path=ibdata1:2G:autoextend
#innodb_buffer_pool_size=51200M
#innodb_log_file_size=512M
#innodb_log_files_in_group=3
#max_connections=3000
max_connections=500
#max_user_connections=800
#innodb_file_per_table=ON
#innodb_flush_log_at_trx_commit=1
#innodb_flush_method=O_DIRECT
#innodb_log_buffer_size=16M
innodb_open_files=3000
关闭服务,将该文件放置到/etc/目录下或者/usr/local/mysql/目录下,启动服务。
service mysql stop;
service mysql start;
重点提醒,在使用my.cnf配置文件时,会有很多错误提示,比如pid文件缺失等,主要问题就在意权限的缺失,所以在执行完第四和第五步之后,一定记得第六步授权。