You can't redeclare it, but you can use the standard C library function strcpy() to put something else in the array.
If you initialize the array the way that you showed, you must make absolutely certain that you don't try to copy a longer "string" to that array. (See Footnote.)
Footnote:
It is the programmer's responsibility to make absolutely sure that the new "string" is no longer than the one that was used to initialize the array.
Instead of using a string literal to initialize, you can make the array any size you want and then strcpy() whatever you want:
// Thsee messages can't have more than 14 characters plus terminating zero byte
char msg[15];
.
.
.
strcpy(msg, "Hi, Everyone.");//13 plus terminating zero byte
Serial.print("First message : ");
Serial.println(msg);
strcpy(msg, "Bye, now!");//9 plus terminating zero byte.
Serial.print("Second message: ");
Serial.println(msg);
Serial.println();
When compiling from within the Arduino Environment (arduino-0018), compiler warnings are turned off, so many (most?) readers on this forum will never see the warning.
For people compiling (by whatever means) with warnings turned on (a Good Thing, in my opinion), the proper fix (in my opinion) is to use const in the declaration, not to throw away the warning against "const correctness."
Those warnings are clues that may give some help in avoiding certain problems, but only if you heed and correct the conditions that gave them (instead of putting some kludge that merely suppresses the warnings).