1.临时修改主机名
显示主机名:
zhouhh@zzhh64:~$ hostname
zhh64
修改主机名:
zhouhh@zzhh64:~$ sudo hostname zzofs
zhouhh@zzhh64:~$ hostname
zzofs
看一下$PS1
zhouhh@zzhh64:~$ echo $PS1
/[/e]0;/u@/h: /w/a/]${debian_chroot:+($debian_chroot)}/u@/h:/w/$
@符号后面跟/h即主机名。
命令行前的提示符主机名怎么没有更新呢?
重新打开一个终端,就看到更新了。
zhouhh@zzofs:~$
2.永久修改主机名
以上的修改只是临时修改,重启后就恢复原样了。
redhat/centos上永久修改
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=192.168.10.1
修改network的HOSTNAME项。点前面是主机名,点后面是域名。没有点就是主机名。
[root@localhost ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gdbk
这个是永久修改,重启后生效。目前不知道怎么立即生效。
想立即生效,可以同时采用第一种方法。
还有一个就是修改
/etc/hosts
127.0.0.1 localhost.localdomain
::1 hdirect30 hdirect30
127.0.0.1后面的那一部分。
deb/ubuntu上修改 :
hostname
localhost.localdomain
sudo vi /etc/hostname
在/etc/hostname里面直接填上hostname
zhouhh@localhost:~$ cat /etc/hostname
zhh64
重启后,提示符变成了。
zhouhh@zhh64:~$
如果不想重启,则用hostname名令。
3. 其他修改方式
用sysctl 修改kernel.hostname
查看:
zhouhh@zhh64:~$ sysctl kernel.hostname
kernel.hostname = zhh64
修改:
zhouhh@zhh64:~$ sudo sysctl kernel.hostname=zzh
kernel.hostname = zzh
重新打开shell就变成如下hostname了zhh
zhouhh@zzh:~$
4. hosts文件与主机名修改无关
一些网络文章中提出修改主机名还需修改Hosts文件,其实hosts文件和主机名修改无关。
cat /etc/hosts
127.0.0.1 localhost
192.168.11.116 zhh64
192.168.12.14 centdev
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
hosts文件是配本地主机名/域名解析的。
如我本机ip是192.168.11.116名字是zhh64.就可以直接访问主机名。
zhouhh@zhh64:~$ ping zhh64
PING zhh64 (192.168.11.116) 56(84) bytes of data.
64 bytes from zhh64 (192.168.11.116): icmp_seq=1 ttl=64 time=0.077 ms
zhouhh@zhh64:~$ ping centdev
PING centdev (192.168.12.14) 56(84) bytes of data.
64 bytes from centdev (192.168.12.14): icmp_seq=1 ttl=63 time=0.726 ms
如果是小型局域网,就可以将hosts文件机器配全了,拷贝到每个机器,然后在ssh访问时用主机名直接访问。
zhouhh@zhh64:~$ ssh centdev
zhouhh@centdev's password:
Last login: Wed Feb 3 10:03:09 2010 from 192.168.11.116
[zhouhh@centdev ~]$
[zhouhh@centdev ~]$ ifconfig eth0 | grep inet
inet addr:192.168.12.14 Bcast:192.168.12.255 Mask:255.255.255.0
inet6 addr: fe80::21e:c9ff:fe57:2575/64 Scope:Link
4.参考
http://www.ducea.com/2006/08/07/how-to-change-the-hostname-of-a-linux-system/
#!/bin/bash
# RMAN SCRIPTS install_mysql.sh
# by dbabc 2011/10/09
# User specific environment and startup programs
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
yum -y install gcc gcc-c++ libtool autoconf automake imake libxml2-devel expat-devel ncurses-devel cmake bison
mkdir -p /usr/local/mysql/
mkdir -p /opt/data/mysql/
groupadd -g 502 mysql
useradd -u 502 -g mysql mysql
chown mysql.mysql -R /opt/data/mysql/
cd /usr/local/src
wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz
tar zxf cmake-2.8.5.tar.gz -C /usr/local/src
cd /usr/local/src/cmake-2.8.5
./bootstrap
make -j2 && make install
cd /usr/local/src
wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.16.tar.gz
tar zxf mysql-5.5.16.tar.gz -C /usr/local/src
cd /usr/local/src/mysql-5.5.16
CFLAGS="-O3" CXX=gcc
CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/opt/data/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_DEBUG=0
make -j2&& make install
cp support-files/my-medium.cnf /etc/my.cnf
#vi /etc/mysql/my.cnf
#datadir = /data/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/opt/data/mysql --no-defaults
chgrp -R mysql /usr/local/mysql/.
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
echo "/usr/local/lib" >>/etc/ld.so.conf
ldconfig
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
service mysql start
/usr/local/mysql/bin/
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile
exit
CentOS系统安装好MySQL后,默认情况下不支持用户通过非本机连接上数据库服务器,下面是解决方法:
1、在控制台执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的。
2、在mysql控制台执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION;
3、在mysql控制台执行命令中的 'root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword'是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,GRANT具体操作详情见:http://dev.mysql.com/doc/refman/5.1/en/grant.html
4、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容
修改mysql root 密码
Method 1:
在/usr/local/mysql/bin/下:
./mysqladmin -u root password ‘new_password’
一般安装时用此方法设置。
Method 2:
在mysql状态下:
mysql>UPDATE user SET password=PASSWORD(‘new_password’) WHERE user=’root’;
mysql>FLUSH PRIVILEGES;
Method 3:
mysql>SET PASSWORD FOR root=PASSWORD(‘new_password’);
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
mysql> flush privileges;
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
GRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root";
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
将其注释掉,保存。
3、重新启动MySQL服务器。执行下面的几条命令即可:
# /usr/bin/mysqladmin -u root -p shutdown
# /usr/bin/mysqld_safe &
如果mysqladmin和mysql_safe不在/usr/bin目录中,可以通过whereis命令查找,例如:
# whereis mysqladmin
mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz