如果服务器已经安装过 MySQL,或者没有 root 权限,我们可以使用普通用户安装 MySQL。安装步骤如下 :
1、下载 MySQL 安装包,放到当前普通用户目录下解压。
[user@localhost ~]$ tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz [user@localhost ~]$ mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
2、编辑 my.cnf 配置文件,放在当前 MySQL 安装目录下,配置文件路径/home/user/mysql/my.cnf 。
[user@localhost ~]$ cd mysql [user@localhost mysql]$ vi my.cnf #添加以下内容 [client] port=3336 socket=/home/mysql/mysql5.7/mysql.sock [mysqld] #服务端口号 port=3336 #mysql安装根目录 basedir=/home/mysql/mysql5.7 #mysql数据文件所在位置 datadir=/home/mysql/mysql5.7/data #mysql进程文件 pid-file=/home/mysql/mysql5.7/mysql.pid #设置socke文件所在目录 socket=/home/mysql/mysql5.7/mysql.sock #数据库错误日志文件 log_error=/home/mysql/mysql5.7/error.log server-id=100 #数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节 character-set-server = utf8mb4 #数据库字符集对应一些排序等规则,注意要和character-set-server对应 collation-server = utf8mb4_general_ci #设置client连接mysql时的字符集,防止乱码 init_connect='SET NAMES utf8mb4' #是否对sql语句大小写敏感,1表示不敏感 lower_case_table_names = 1 max_allowed_packet = 100M innodb_log_file_size=300M
3、进入 MySQL 目录,开始安装 MySQL。
[user@localhost mysql]$ bin/mysqld --defaults-file=/home/user/mysql/my.cnf --initialize --user=user --basedir=/home/user/mysql --datadir=/home/user/mysql/data #--defaults-file 指定配置文件 #--initialize 自动生成带随机密码的root用户
4、启动停止 MySQL
[user@localhost mysql]$ bin/mysqld_safe --defaults-file=/home/user/mysql/my.cnf --user=user & [user@localhost mysql]$ bin/mysqladmin shutdown -u root -p -S /home/user/mysql/mysql.sock #./mysqld_safe启动mysql会默认寻找/etc/my.cnf配置文件。普通用户没有权限,因此要通过--defaults-file指定我们自定义的配置文件 #bin/mysqld_safe: line 647: /var/log/mariadb/mariadb.log: No such file or directory # 启动报错:mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user '2iuser'.bin/mysqld_safe: line 144: /var/log/mariadb/mariadb.log: No such file or directory #当前系统中安装了mariadb,mariadb的配置文件路径/etc/my.cnf,mysql根据配置文件无法找到相关的文件,所以报错。 #查找mariadb,删除mariadb。 [user@localhost mysql]$ rpm -qa | grep mariadb [user@localhost mysql]$ rpm -e mariadb-libs-5.5.56-2.el7.x86_64
5、在 error.log 文件中获取 root 用户密码。
[user@localhost mysql]$ cat error.log | grep root@localhost
6、安装完成,使用 root 用户登陆 MySQL。
[user@localhost mysql]$ bin/mysql -u root -p -S /home/user/mysql/mysql.sock Enter password: #如果不加-S登录时会报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) #其中一种解决方法是在命令行里指定sock文件即可登陆,由于本机已安装mysql数据库,sock文件在/tmp/mysql.sock已存在,所以建议这种方式登录,后续再想办法优化。 [user@localhost mysql]$ bin/mysql -u root -p -S /home/user/mysql/mysql.sock #由于mysql是在路径/tmp/mysql.sock寻找sock文件,我们配置文件里指定的路径是/home/2iuser/mysql/mysql.sock,所以加上软连接即可。 [user@localhost mysql]$ ln -s /home/user/mysql/mysql.sock /tmp/mysql.sock
7、修改 root 密码。
mysql> set password=password('root'); Query OK, 0 rows affected, 1 warning (0.00 sec)
8、修改权限使远程客户端可以连接。
mysql> use mysql Database changed mysql> select host,user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 3 rows in set (0.00 sec) mysql> grant all privileges on *.* to 'root'@'%' identified by 'root'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select host,user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | % | root | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+-------------- 4 rows in set (0.00 sec)
9、loginAsRoot.sh
在 mysql5.7 目录下创建 loginAsRoot.sh,并赋予可执行权限 chmod +x loginAsRoot.sh
#!/bin/sh bin/mysql -u root -p -S /home/mysql/mysql5.7/mysql.sock
10、mysql 启动停止脚本
- 第一步:在 mysql5.7 目录下创建 mysql(此处把.sh 去掉了),并赋予可执行权限
chmod +x mysql
#!/bin/sh # chkconfig: 2345 90 10 # description: Mysql is a database # 服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。优先级范围是0-100,数字越大,优先级越低 # 0:关机 # 1:单用户模式 # 2:无网络支持的多用户模式 # 3:有网络支持的多用户模式 # 4:保留,未使用 # 5:有网络支持有X-Window支持的多用户模式 # 6:重新引导系统,即重启 #开始方法 start() { /home/mysql/mysql5.7/bin/mysqld_safe --defaults-file=/home/mysql/mysql5.7/my.cnf --user=mysql & echo "$mysql started success." } #结束方法 stop() { echo "stopping mysql ..." /home/mysql/mysql5.7/bin/mysqladmin shutdown -u root -p -S /home/mysql/mysql5.7/mysql.sock } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Userage: $0 {start|stop|restart}" exit 1 esac
- 第二步:将脚本添加到
/etc/rc.d/init.d/
下面
cp mysql /etc/rc.d/init.d/
- 第三步:将脚本添加到开机自启项目里
chkconfig --add mysql 使用chkconfig --list mysql 判断是否生效
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于