mysql 的安装目录为/mysql
1. 准备需要安装的mysql压缩包
2. 建立mysql所拥有的用户组及用户
groupadd mysql (创建用户组)
adduser -g mysql mysql (在mysql用户组下创建用户mysql,这是home目录下会新建一个mysql的用户目录)
注:如果在用户组下创建用户时报错, 可以尝试先删除用户,再新建 userdel -r mysql (得带参数 '-r' 删除用户及用户拥有的目录权限目录)
passwd mysql 给用户设置密码
新增根目录
mkdir /mysql
新增数据文件存放目录:
mkdir -p /mysql/data
3. 将压缩包解压到目标文件夹下
(解压缩) tar -zxvf ./mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /mysql
(重命名) mv ./mysql-5.7.18-linux-glibc2.5-x86_64 ./mysql-5.7.18
设置环境变量:
> vi /etc/profile
加入下面的内容
export PATH=/mysql/mysql-5.7.18/bin:$PATH
4. 设置mysql启动文件mysqld
vi /mysql/mysql-5.7.18/support-files/mysql.server
(basedir="安装目录"
datadir="数据")
将"mysql.server" 改名并复制到 "/etc/inin.d/"下面,文件名为"mysqld"
cp /mysql/mysql-5.7.18/support-files/mysql.server /etc/inin.d/mysqld
5. 设置mysql的默认参数设置my.cnf
cd /mysql/mysql-5.7.18
vi my.cnf
将下面虚线的内容复制到文件中:
|-----------------------------------------------------------------------------------
| [client]
| socket =/mysql/data/mysql.sock
| default_character_set = utf8
|
| [mysql]
| socket=/mysql/data/mysql.sock
|
| [mysqld]
|
| server_id = 1607
| port = 3306
| basedir = /mysql/mysql-5.7.18
| datadir = /mysql/data
| socket = /mysql/data/mysql.sock
| pid_file = /mysql/data/mysql.pid
| log_error = /mysql/data/mysql_error.log
| log_bin = /mysql/data/mysql_bin
| relay_log = /mysql/data/relay_bin
| character_set_server = utf8
| collation_server = utf8_general_ci
|
|
| innodb_buffer_pool_size = 1G
| innodb_buffer_pool_instances = 8
| innodb_log_file_size = 1G
| innodb_log_files_in_group = 3
| innodb_log_buffer_size = 24M
| innodb_flush_log_at_trx_commit = 1
| innodb_file_per_table = 1
| innodb_flush_method = O_DIRECT
| innodb_io_capacity = 200
| innodb_io_capacity_max = 600
| innodb_thread_concurrency = 0
| innodb_autoinc_lock_mode = 2
| innodb_lock_wait_timeout = 60
| innodb_read_io_threads = 4
| innodb_write_io_threads = 4
| innodb_max_dirty_pages_pct = 80
| innodb_autoextend_increment = 512
| innodb_checksum_algorithm = NONE
| innodb_doublewrite = 0
| innodb_use_native_aio = 1
| innodb_open_files = 8192
|
|
| sync_binlog = 1
| sync_relay_log = 1
| relay_log_info_repository = TABLE
| master_info_repository = TABLE
| expire_logs_days = 10
| binlog_format = ROW
| transaction-isolation = READ-COMMITTED
| concurrent_insert = 2
| skip_slave_start = TRUE
|
|
| back_log = 2000
| thread_stack = 256k
| thread_cache_size = 256
| key_buffer_size = 256M
| tmp_table_size = 64M
| read_buffer_size = 2M
| read_rnd_buffer_size = 8M
| sort_buffer_size = 2M
| join_buffer_size = 2M
| query_cache_size = 0
| query_cache_type = 0
| max_heap_table_size = 64M
| binlog_cache_size = 2M
| table_open_cache = 8192
| max_allowed_packet = 64M
| bulk_insert_buffer_size = 64M
|
|
| max_connect_errors = 100000
| max_connections = 500
| connect_timeout = 300
| wait_timeout = 86400
| interactive_timeout = 86400
| lower_case_table_names = 1
| open_files_limit = 20480
| skip_name_resolve
| skip_external_locking
| explicit_defaults_for_timestamp = TRUE
| sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|-----------------------------------------------------------------------------------
注意: 注意my.cnf 的权限问题 , 将其设置为本用户情况才有读写权限.
chmod 644 /mysql/data/my.cnf
6.设置mysql所有目录赋权限给mysql用户
chown -R mysql.mysql /mysql/
7. 从root用户切换到mysql用户,并初始化数据库
> su mysql
初始化数据库之前 把5中的配置文件复制到 /etc/下, 初始化数据库会用到这个
> cp
/mysql/mysql-5.7.18/my.cnf /etc/my.cnf
> /mysql/mysql-5.7.18/bin/mysqld --initialize --user=mysql --basedir=/mysql/mysql-5.7.18/ --datadir=/mysql/data/
这时会生成初始密码如: cqJ2+D;R;(qy
8.指定数据库默认相关配置文件
将5中的 my.cnf 文件移动到/mysql/data/ 下
/mysql/mysql-5.7.18/bin/mysqld_safe --defaults-file=/mysql/data/my.cnf --user=mysql &
9. 重置初始密码(有多种方式 , 我是使用的使用安全模式登录,修改密码)
老版mysql 重置密码:
update user set password=password('12345') where user='root' ;
新版mysql重置密码:
update mysql.user set authentication_string=password('您的密码') where user='root'
安装结束, 使用控制台和远程客户端登录. 感觉安装遇到很多小细节, 不注意就会入坑!!!!
其中会遇到各种坑:
1) 比如,第一次重置密码后,重新登录系统.会报错 Access denied for user 'root'@'localhost' (using password:YES)
解决方法: 使用安全模式登录,修改mima
2) 数据库安装好了,但是不允许远程客户端登录.解决方法: 远程登录授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'vincent123' WITH GRANT OPTION;
3 ) 尽量不要在mysql的用户目录下存放安装的目录,一旦使用msyql用户安装数据库,配置文件填写路径会遇到权限相关的问题.. 我这里是在根目录下新建目录安装的, 給安装数据库的用户赋予权限
chown -R mysql:mysql /mysql .
4) 安装过程中, 设置了两个数据库配置文件, 因为权限的问题, /etc 的文件, 是无法被mysql 用户加载的,手动初始化数据库读取的my.cnf 是 在/mysql/data/下的. (my.cnf文件是安照一定的顺序 加载的 ,my.cnf可以存在多个.)