Linux 普通用户安装 mysql

本贴最后更新于 1834 天前,其中的信息可能已经时过境迁

如果服务器已经安装过 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 判断是否生效
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...