嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件相关的知识,希望对你有一定的参考价值。

网上查了一些资料这个是inittab中相关的部分,请问应该怎么改呢?

Uncomment these for a devfs system
#
#1:2345:respawn:/sbin/getty 38400 vc/1
#2:23:respawn:/sbin/getty 38400 vc/2
#3:23:respawn:/sbin/getty 38400 vc/3
#4:23:respawn:/sbin/getty 38400 vc/4
#5:23:respawn:/sbin/getty 38400 vc/5
#6:23:respawn:/sbin/getty 38400 vc/6
#
# Uncomment these only for non-devfs systems
#
#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

如果不在这个文件下操作,那我应该如是实现呢?

嵌入式 Linux 如何以root身份自动登录 并开机自动执行脚本文件
下面操作步骤记录如下:

要设置自启动程序需要解决两个问题:1、系统自动登录;2、自动执行脚本,

1)系统自动登录

(1)修改/etc/inittab

在inittab中,有如下配置

1:2345:respawn:/sbin/agetty tty1 9600

2:2345:respawn:/sbin/agetty tty2 9600

3:2345:respawn:/sbin/agetty tty3 9600

4:2345:respawn:/sbin/agetty tty4 9600

5:2345:respawn:/sbin/agetty tty5 9600

6:2345:respawn:/sbin/agetty tty6 9600

表示系统可以有六个控制台,可以用ALT+(F1~F6)来切换。而/sbin/agetty就是一个登陆验证程序,执行它,会提示用户输入用户名和密码,然后启动一个指定的shell(在passwd文件中指定的)。

所以,我们只需将其修改为不执行agettty,而是执行自己编写的一个脚本,就可以跳过用户名和密码的输入。修改如下:

1:2345:respawn:/root/logintest tty1 9600

这里我在/root/下放了一个测试脚本,这样系统启动时就会执行那个脚本,脚本内容:

#!/bin/sh

/bin/login -f root

脚本其实就是执行了一个root用户的登陆而已。

2)自动执行程序

方法有两种,一种是将要执行的代码放到1)中的/root/logintest的后面;

另一种是将要执行的代码放到/etc/profile文件的后面即可。
参考技术A 加到/etc/rc.d/rc.local中追问

我在rc.d这个文件夹下没找到rc.local额...这个是什么情况......

追答

新建一个,试试看,不行就在init.d里照着别的文件写个脚本,rc3.d里建个链接

本回答被提问者采纳

无法以 root linux 用户身份运行 mysql 命令

【中文标题】无法以 root linux 用户身份运行 mysql 命令【英文标题】:Can't run mysql commands as root linux user 【发布时间】:2022-01-07 12:43:37 【问题描述】:

作为 linux root 用户:

root@local:~# mysql

ERROR 1045 (28000): Access denied for user 'root'@'localhost'(使用 密码:否)

我很困惑。 root 用户不应该能够在没有额外身份验证的情况下运行mysql 吗?我该如何解决这个问题?

【问题讨论】:

如果你只运行mysql root 用户应该没有密码 mysql -u root -p 怎么样?它要求输入密码吗? 如果我指定mysql用户当然会要求输入密码,但我不想提供密码,我想以linux root身份运行mysql命令而不需要密码。 this 或 this 是否适合您? 不,这些答案仍然需要某种方式的密码 【参考方案1】:

您在 MySql 中的 root 帐户有密码。试试这个

mysql -p

并输入您或其他人设置的密码。

如果不行,试试

mysql -h localhost -u root -p

那个不起作用,你需要重置你的 MySql 根密码。这是关于“toobz”的几个教程的主题

【讨论】:

mysql -p 要求 root linux 帐户能够在不提供密码的情况下运行 mysql。这是我的问题。 @Dan 您的问题是您的 root 用户有密码,而您想在没有密码的情况下登录。这是不可能的【参考方案2】:

如果 MySQL root 用户有密码,使用默认的身份验证插件,那么你必须提供密码才能连接,句号。您可以配置一个没有密码的帐户,但这是您应该避免的习惯。

您可以通过以下任何一种方式提供密码:

使用-p 选项以交互方式输入 在命令行中以明文形式输入,如-p<mypassword>~/.my.cnf 文件的[client] 部分中以纯文本形式存储它(请参阅https://dev.mysql.com/doc/refman/8.0/en/option-files.html) 将其以模糊的形式存储在您的 ~/.mylogin.cnf 文件中(请参阅 https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html)。

还有一种方法可以通过环境变量提供密码,但现在不鼓励这样做,因为它真的不安全。

【讨论】:

auth_socket 呢? 如果您创建要使用 auth_socket 插件进行身份验证的 root 用户(例如:CREATE USER 'root'@'localhost' IDENTIFIED WITH auth_socket),这将起作用,但如果 root 用户是以传统方式创建的,则使用密码进行身份验证,则 auth_socket 将不起作用。 我不明白我设置的最后一个服务器是如何默认设置 auth_socket 而这个新服务器没有。我正在尝试编写一个安装脚本来初始化 mysql 数据库,并且我想运行 mysql 命令。我要么需要使用 auth_socket(显然不是默认值),要么能够在 bash 脚本中提供 root 密码(-p 似乎不起作用,即使您提供了值它也会提示输入密码)。 请注意,在命令行上提供密码值要求您在 -p 和密码之间没有空格。即-p password 错误,它会将密码解释为下一个参数。您必须像 -ppassword 一样指定它。 我不知道谁设置了您的最后一个服务器或它是什么版本。也许是 MariaDB? MariaDB 不是 MySQL。它们改变了很多特性,其中之一是创建 root 用户以默认使用 auth_socket,参见。 mariadb.com/kb/en/authentication-plugins【参考方案3】:

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

【讨论】:

以上是关于嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件的主要内容,如果未能解决你的问题,请参考以下文章

Debian和Ubuntu Linux下如何以root身份登录图形界面

Linux系统如何用root身份登陆?

CentOS 7自动以root身份登录GNOME桌面

为SSH登录设置电子邮件提醒

虚拟机VMware)fedora 18怎么样以root身份进入linux,原先是用非root身份登录,只为需要按Vmware tool

银河麒麟忘记root密码的解决办法?