一、下载并解压
1) 创建目录
mkdir -p /data/softWare/mysql # mysql安装文件目录 mkdir -p /data/mysql_3306Data/ # mysql数据库目录 mkdir -p /data/mysql_3306Data/ssl # mysql密钥目录 mkdir -p /var/run/mysqld/ # socket文件目录
2)下载
官网地址:
https://dev.mysql.com/downloads/mysql/5.6.html
或
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
或
从本地yum源下载
3)解压
cd /data/softWare/mysql tar -zxvf /data/download/mysql/tar_install/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz.1 ./ mv mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz.1 mysql-5.7
二、删除mysql历史包
rpm -qa | grep mysql
如果有包存在,使用 rpm -e --nodeps 包名 命令依次删除;如:
mysql-5.1.47-4.el6.x86_64
rpm -e --nodeps mysql-5.1.47-4.el6.x86_64
三、添加mysql用户
groupadd mysql #创建mysql组 useradd -r -s /sbin/nologin -g mysql mysql -d /data/softWare/mysql/mysql-5.7 #添加mysql用户使其shell模式为nologin(禁止登录) chown -R mysql:mysql /data/softWare/mysql/mysql-5.7 chown -R mysql:mysql /data/mysql_3306Data
四、初始化安装
1) 提前安装numactl组件
yum -y install numactl
2) 初始化
bin/mysqld --initialize --user=mysql --basedir=/data/softWare/mysql/mysql-5.7 --datadir=/data/mysql_3306Data
这一步就将最后的密码记住,后面登陆mysql时使用,最好使用 echo “passwd of tmp” > passwdTmp 命令记下来
3) 生成密钥文件
bin/mysql_ssl_rsa_setup --datadir=/data/mysql_3306Data/ssl
五、修改配置文件
1) my.cnf 文件配置
cd support-files
发现没有my-default.cnf文件,然后手动创建:
vim /etc/my.cnf (下面的文件,按照自己的配置修改对应参数即可)
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock #登陆MySQL客户端读取的socket文件 [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir = /data/softWare/mysql/mysql-5.7 #MySQL的home路径 datadir = /data/mysql_3306Data/ #MySQL的数据存放目录 port = 3306 socket = /var/run/mysqld/mysqld.sock #mysqld启动时读取的socket文件 character-set-server=utf8 back_log = 300 max_connections = 3000 max_connect_errors = 50 table_open_cache = 4096 max_allowed_packet = 32M #binlog_cache_size = 4M max_heap_table_size = 128M read_rnd_buffer_size = 16M sort_buffer_size = 16M join_buffer_size = 16M thread_cache_size = 16 query_cache_size = 128M query_cache_limit = 4M ft_min_word_len = 8 thread_stack = 512K transaction_isolation = REPEATABLE-READ tmp_table_size = 128M #log-bin=mysql-bin long_query_time = 6 server_id=1 innodb_buffer_pool_size = 1G innodb_thread_concurrency = 16 innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 innodb_file_per_table = on [mysqldump] quick max_allowed_packet = 32M [mysql] no-auto-rehash default-character-set=utf8 safe-updates [myisamchk] key_buffer = 16M sort_buffer_size = 16M read_buffer = 8M write_buffer = 8M [mysqlhotcopy] interactive-timeout [mysqld_safe] open-files-limit = 8192
2) mysqld 文件配置
cp mysql.server /etc/init.d/mysqld vim /etc/init.d/mysqld
这里的配置与mysql相同,我修改了basedir, datadir, lockdir, lock_file_path 四个参数,
mysqld_pid_file_path 参数值必须为空,启动MySQL时会自动分配值写入pid文件
六、启动MySQL
1)启动前检测
bin/mysqld_safe --user=mysql & # 后台运行,检测
2)检查mysqld服务状态,确保mysql服务处在running...
chown -R mysql:mysql /var/run/mysqld service mysqld start 或 /etc/init.d/mysqld start
3) 登陆并修改密码
cat passwdTmp #查看临时密码 bin/mysql -uroot -p
mysql> alter user 'root'@'localhost' identified by 'youpassword'; # 修改密码 或 mysql> set password=password("youpassword"); mysql> flush privileges; # 最后刷新权限
如果 bin/mysql -uroot -p 无法启动时,修改/etc/my.cnf文件,在[mysqld]下面添加“skip-grant-tables” 跳过登陆验证,最后在修改密码后,注销掉“skip-grant-tables”参数。
七、修改MySQL配置
1) 创建软链接,使mysql全局使用
ln -s /data/softWare/mysql/mysql-5.7/bin/mysql /usr/bin/mysql5.7
2) 配置mysql中自启动
chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 345 mysqld on chkconfig --list mysqld # 查看mysqld启动状态
3) 配置远程可访问
3-1) 退出安全模式
mysql> show variables like 'sql_safe%'; # 1. 查看当前状态
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | sql_safe_updates | OFF | +------------------+-------+
set sql_safe_updates=0; 或 set sql_safe_updates=off; #2. 修改状态
3.2) 配置远程可访问
mysql>use mysql; mysql>update user set host='%' where user='root'; mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpasswd' WITH GRANT option; # 配置你的远程登陆密码 *.* 为数据库名.表名; %为ip或域名 mysql>FLUSH PRIVILEGES; mysql>quit
# service mysql restart; # 重启后即可生效
4) 配置多端口
4.1)创建数据库文件 和 my3307.cnf, mysqld3307 配置文件
4.1-1) mkdir -p /data/mysql_3306Data/
4.1-2) cp /etc/my3306.cnf /etc/my3307.cnf
1. 修改my.cnf为my3306.cnf, 在/etc目录下修改my.cnf 为my3306.cnf,同时更改其中的socket配置为:/var/run/mysqld/mysqld3306.sock,然后以此来修改/var/run/mysqld 中的文件名字
2. 拷贝my3306.cnf文件为my3307.cnf,然后修改其中 port,datadir,socket 等配置
4.1-3) cp /etc/init.d/mysql3306 /etc/init.d/mysql3307
1. 修改mysqld为mysql3306
2. 拷贝mysql3306为mysql3307,然后修改其中 datadir 等配置
4.2)启动
4.2-1) 初始化
bin/mysqld --initialize --user=mysql --basedir=/data/softWare/mysql/mysql-5.7 --datadir=/data/mysql_3307Data # 这一步要记住临时密码 bin/mysql_ssl_rsa_setup --datadir=/data/mysql_3306Data/ssl # 生成密钥文件
4.2-2) 启动前检测:
bin/mysqld_safe --defaults-extra-file=/etc/my3307.cnf --user=mysql &
4.2-3) 启动
mysql -uroot -P 3307 -h 127.0.0.1 -p mysql> alter user 'root'@'localhost' identified by 'youpassword'; mysql> flush privileges; mysql> quit;
mysql -uroot -P 3307 -h 127.0.0.1 -p mysql> set sql_safe_updates=0; mysql> use mysql; mysql> update user set host='%' where user='root'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpasswd' WITH GRANT option; # 配置你的远程登陆密码 *.* 为数据库名.表名; %为ip或域名 mysql> FLUSH PRIVILEGES; mysql> quit
# service mysql restart; # 重启后即可生效
# 此配置在本地登陆3307端口需指定 -h 127.0.0.1